FHEM Forum

FHEM - Hardware => FRITZ!Box => Thema gestartet von: Pocki90 am 22 Januar 2019, 15:59:44

Titel: Offset Einstellung Fritz Dect 301
Beitrag von: Pocki90 am 22 Januar 2019, 15:59:44
Hallo Leute,
erstmal will ich mich hier für die tolle Arbeit und dieses super Forum bedanken. Ich bin relativ neu bei FHEM und hab hierdurch viel erfahren und schon gelernt. Jetzt stehe ich aber vor einem Problem und komm nicht weiter und finde auch nix dazu im Forum. Ich würde gerne die Offset Einstellung meiner Fritz Dect 301 Geräte verändern können. Das entsprechende reading mit tempadjust gibt es ja. Aber einfach per SET diesen Wert zu verändern klappt leider nicht. Gibt es andere Möglichkeiten oder wir diese Einstellung gar nicht unterstützt. Hintergrund meiner Frage ist, das ich die Raumtemperatur mithilfe eines Wemos D1 Boards und der Software ESPEasy messe. Dabei hab ich Abweichungen zu den Thermostaten von bis zu 2 Grad festgestellt. Diese Abweichung würde ich gerne als Offset einstellen können.

Viele Dank schon mal für eure Hilfe.
Martin
Titel: Antw:Offset Einstellung Fritz Dect 301
Beitrag von: rudolfkoenig am 22 Januar 2019, 19:52:53
Laut
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/AHA-HTTP-Interface.pdf
Kapitel 1.2, gibt es keine Moeglichkeit, diesen Wert per API zu setzen.
Man muss es wohl direkt in der Fritz!Box oberflaeche setzen.
Titel: Antw:Offset Einstellung Fritz Dect 301
Beitrag von: Pocki90 am 23 Januar 2019, 09:14:08
Vielen Dank für die Antwort. Dann muss ich es jetzt erstmal anders lösen und hoffen, das AVM irgendwann seine API erweitert.
Titel: Antw:Offset Einstellung Fritz Dect 301
Beitrag von: Randybobandy am 13 April 2021, 10:00:21
Ich habe schon vor ein oder zwei Jahren an AVM geschrieben mit der Bitte, die Einstellung der tatsächlichen Raumtemperatur im FBAHAHTTP Interface zu integrieren. Vermutlich gibt es aber nicht viele Leute, die dies benötigen- jedenfalls geht es immer noch nicht.

Ich habe jetzt ein Perl script für meine persönliche Verwendung geschrieben. Ich habs nicht als DOIF und in 99_myUtils.pm umgesetzt, weil ich mein Fritzbox Kennwort nicht da drin speichern wollte. Vielleicht ist das albern- keine Ahnung. Ich bin leider kein Linux Sicherheitsexperte.

Ich habe es umgesetzt als Perl script für einen Cron Job der 1x Nachts um 00:05 laufen soll und Leserechte nur für root hat. Es kann auf dem FHEM Rechner selbst laufen (telnet oder web FHEM interface) oder auf einem anderen Rechner im Netzwerk (web interface).

Das Script holt sich die statTemperatureDayAvgLast von meinen FBDECT Geräten und meinen Sensoren (Aqara Temp/Humi/Baro) und vergleicht diese. Die Differenz in °C in 0,5° Schritten wird dann als "Klicks" an Firefox::Marionette weitergegeben. Firefox Marionette bedient dann das ganz normale FritzBox web interface, loggt sich ein und klickt bei Tatsächliche Raumtemperatur der Geräte die + und - Knöpfe.

Beispiel: Gemessene Raumtemperatur vom externen Sensor im Wohnzimmer ist 19°C, eingestellte tatsächliche Raumtemperatur vom FBDECT ist 20°C -> Öffne Wohnzimmer FBDECT im Fritzbox Web Interface und klicke 2x "-"

Firefox::Marionette->new(visible => auf 1 stellen anstatt auf 0, dann geht ein Firefox Fenster auf und ich kann genau beobachten, was passiert. Bei 0 läuft es headless aber gibt trotzdem ziemlich viel Diagnosetext aus.

Wenn $testdrive = 1, klickt Firefox bei den FBDECTs nicht auf OK sondern auf Abbrechen. Nützlich, wenn ich das script mehrmals laufen lassen und schauen will, ob es richtig klickt, ohne jedes mal alles in den FBDECTs zu verstellen.

Ich habe für FHEM kein Passwort vergeben- weder für Telnet noch für das Web Interface. Das script kann sich nicht an FHEM mit Passwort anmelden.

Mit "statTemperatureDayAvgLast" darf ich das Script nur 1x täglich laufen lassen im nicht-test-modus. Sonst laufen die Werte komplett auseinander. Mit "statTemperatureHourAvgLast" ginge es stündlich 1x aber keine Ahnung, ob das Sinnvoll ist. Vielleicht sind die Batterien von den FBDECT dann schneller leer?

Mein Cron Job für root (sudo crontab -e) sieht so aus: 5 0 * * * /usr/bin/perl /home/pi/scripts/uni.pl >> /tmp/fbdect_marionette.txt

Bestimmt könnte man das alles schöner als richtiges FHEM Modul umsetzen.

Auf meinem Windows PC läuft das Script ziemlich schnell durch. Beim Raspberry Pi 4 kann es schonmal ein paar Minuten dauern, bis es fertig ist.

Wenn jemand Vorschläge hat, wie man das sicherer oder besser umsetzen könnte, würde ich mich freuen. Fürs erste funktioniert es bei mir schonmal.



#!/usr/bin/perl

use strict;
use warnings;
use Firefox::Marionette;
use Text::Table;
use LWP::Simple;

$| = 1;

#Fritzbox Kennwort
my $password = "12345678";

# web or telnet
my $interface = "web";

# 1: Änderungen nicht speichern in den FBDECTs
# 0: Änderungen speichern
my $testdrive = 1;

my $stattype = "statTemperatureDayAvgLast"; # welches Reading
my $fbdectvorname = "FBDECT_301_"; # Namenskonvention FBDECT
my $sensorvorname = "SENSOR_ZHATemperature_"; # Namenskonvention Externer Sensor

# FBDect Name => Externer Sensor Name
my %sensors;
my %fbdects = (
"Bad"            => "Bad",
"Kueche"         => "Kueche",
"Schlafzimmer"   => "Schlafzimmer",
"Kleiderschrank" => "Kleiderschrank",
"Esszimmer"      => "Esszimmer",
"Esszimmer_2"    => "Esszimmer",
"Wohnzimmer"     => "Wohnzimmer"
);
foreach my $fbdect ( keys(%fbdects) ) {
$sensors{ $fbdects{$fbdect} } = 1;
}
my @sensors = keys(%sensors);
@sensors = sort(@sensors);
my @fbdects = keys(%fbdects);
@fbdects = sort(@fbdects);

my $date = `date`;
print $date;

my $tb = Text::Table->new(
    '$fbdect','$sensor_temp','$fbdect_temp','$tune','$clicks'
);
my @tdata;
my %clicks;
my %avgsensor;
my %avgfbdect;
foreach my $fbdect (@fbdects) {
my $fbdect_temp;
my $sensor_temp;
my $sensor = $fbdects{$fbdect};

my $content;
if ($interface eq "web"){
$content = get("http://raspberrypi:8083/fhem?cmd=list $fbdectvorname$fbdect $stattype&XHR=1");
} else {
$content = `/opt/fhem/fhem.pl 7072 "list $fbdectvorname$fbdect $stattype"`;
}
die "Couldn't get it!" unless defined $content;
chomp $content;
if ($content =~ /(\d+\.\d*)$/){
$fbdect_temp = $1;
}
else {die}
if ($interface eq "web"){
$content = get("http://raspberrypi:8083/fhem?cmd=list $sensorvorname$sensor $stattype&XHR=1");
} else {
$content = `/opt/fhem/fhem.pl 7072 "list $sensorvorname$sensor $stattype"`;
}
die "Couldn't get it!" unless defined $content;
chomp $content;
if ($content =~ /(\d+\.\d*)$/){
$sensor_temp = $1;
}
else {die}
$avgsensor{$fbdect} = $sensor_temp;
$avgfbdect{$fbdect} = $fbdect_temp;
my $tune = $sensor_temp - $fbdect_temp;
$tune = sprintf('%.1f', $tune);
my $clicks = $tune / .5; # Jeder Klick = 0,5°C
$clicks = sprintf('%.0f', $clicks);
$clicks{$fbdect} = $clicks;
push @tdata, ([$fbdect,$sensor_temp,$fbdect_temp,$tune,$clicks]);
}
$tb->load(@tdata);
print $tb;

if ($testdrive == 1){print "\nTestmodus\n"}
else {print "\nDie ist kein Test\n"}
#print "Press any key to continue...\n";
#my $temp = <STDIN>;

my $url           = "http://fritz.box/";
my $firefox       = Firefox::Marionette->new(visible => 0,script => 180000);
my $timeouts = $firefox->timeouts();
print "Page Load Timeouts is " . $timeouts->page_load() . " ms\n";
print "Script Timeouts is " . $timeouts->script() . " ms\n";
print "Implicit Timeouts is " . $timeouts->implicit() . " ms\n";

$firefox->go($url);

#Einloggen
my $element = $firefox->find_name('uiPass');
$firefox->clear($element);
$firefox->type($element, $password);
$firefox->find_id('submitLoginBtn')->click();

#Smart Home Geräteverwaltung Menü öffnen
$firefox->find_id('sh_menu')->click();
$firefox->find_id('sh_dev')->click();

#Warten bis die buttons für die Geräte geladen sind
$firefox->await(sub {$firefox->find_class('v-btn v-btn--icon v-btn--small')});

#Anzahl Geräte zählen
my $buttoncount;
foreach my $element ($firefox->find_class('v-btn v-btn--icon v-btn--small')) {
$buttoncount++;
}
$buttoncount--;

#Jedes Gerät einzeln anklicken und bearbeiten
for (my $y=0; $y <= $buttoncount; $y++){

#Warten bis die buttons für die Geräte geladen sind
$firefox->await(sub {$firefox->find_class('v-btn v-btn--icon v-btn--small')});

my @buttons;
foreach my $element ($firefox->find_class('v-btn v-btn--icon v-btn--small')) {
push @buttons, $element;
}
$buttons[$y]->click();
print "\nOeffne FBDECT Geraet $y von $buttoncount...\n";

#Warten bis die Geräteseite geladen ist bzw. Gerätename erscheint, Namen dann auslesen
$firefox->await(sub {$firefox->find_name('ule_device_name')});
my $device = $firefox->find_name('ule_device_name')->property('value');

print "FBDECT $device geoeffnet werde $clicks{$device} clicks ausfuehren\n";

$firefox->await(sub {$firefox->find_id('uiNumDisplay:Roomtemp')});

my $element = $firefox->find_tag("body");
my $text = $element->text;
#die $text;
my $fbdect_temp;
if ($text =~ /Am Heizk.rper gemessen(\d+,\d*)/s)
{
$fbdect_temp = $1;
$fbdect_temp =~ s/,/\./;
} else {
die "FEHLER: Konnte \"Am Heizkörper gemessen\" nicht finden";
}

print "FBDECT Durchschnittstemperatur im stat Zeitaum: $avgfbdect{$device}\n";
print "Sensor Durchschnittstemperatur im stat Zeitaum: $avgsensor{$device}\n";
#print "Aktueller Wert aus FB am Heizkoerper gemessen: $fbdect_temp\n";

# Hier schauen wir uns die am Raumtemp. vor Änderungen an zwecks Debugging
my $ctemp = $firefox->find_id('uiNumDisplay:Roomtemp')->property('innerHTML');
print "Aktueller Wert aus FB Tatsaechliche Raumtemperatur: $ctemp\n";

# Wenn man nicht nach unten scrollt, sind die OK / ABBRECHEN Knöpfe verdeckt und können nicht geklickt werden
$firefox->async_script("window.scrollTo(0,document.body.scrollHeight);");
# Scrollen dauert manchmal einen kleinen Moment
sleep 1;
# Nochmal scrollen nur zur Sicherheit
$firefox->async_script("window.scrollTo(0,document.body.scrollHeight);");
sleep 1;

my $id;
if ($clicks{$device} == 0){
# Bei diesem Gerät ist der Offset schon OK eingestellt also Abbruch
$firefox->find_name('cancel')->click();
print "Click cancel\n";
} else {
if ($clicks{$device} < 0){
# "-" clicks um die Raumtemp zu verringern
$id = "uiNumDown:Roomtemp"
} else {
# "+" clicks um die Raumtemp zu erhöhen
$id = "uiNumUp:Roomtemp"
}
# Jetzt wird geklickt auf "-" oder "+" ($id)
for (my $x=1; $x <= abs($clicks{$device}); $x++){
$firefox->find_id("$id")->click();
print "Click $x\n";
# Debugging: Hier sieht man ob der Wert für Raumtemp auch wirklich geändert wurde
my $ctemp = $firefox->find_id('uiNumDisplay:Roomtemp')->property('innerHTML');
$ctemp =~ s/,/\./;
if (abs($ctemp - $fbdect_temp) >= 5){die "Grosse Temperaturdiff. FBECT/RAUMSENSOR. Hier stimmt was nicht."}
print "Aktueller Wert aus FB Tatsaechliche Raumtemperatur: $ctemp\n";
}
if ($testdrive == 1){
$firefox->find_name('cancel')->click();
print "FAKE Click OK (click cancel)\n";
} else {
# OK anklicken und den 15 Minuten Hinweis bestätigen
$firefox->find_id('uiApply')->click();
$firefox->accept_alert;
print "Click OK\n";
}
}
}


EDIT: Kleine Korrektur im Code 13.04.
EDIT: Debugging Ausgaben auf der Konsole besser verständlich gemacht 18.04.
Titel: Antw:Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 20 April 2021, 14:13:36
Hallo,

ich habe keine Dect-Devices für meine FritzBox. Aber, würdest Du mal im Chrome/Edge die Entwicklertools (F12) aktivieren und auf den Reiter Netzwerk klicken. Wenn Du dann einen Wert änderst,bekommst Du dann in der Tabelle unter Name data.lua angezeigt. Mit klicken auf data.lua wird dann der Inhalt angezeigt. Wenn Du ganz nach unten scrollst wird der abgesetzte Befehl sichtbar.

Falls das alles zutrifft könnte man die Temp. Änderungen auch über das 72_FRITZBOX.pm machen.

Grüße Jörg
Titel: Antw:Offset Einstellung Fritz Dect 301
Beitrag von: Randybobandy am 21 April 2021, 14:51:54
Danke für den Tipp. Hier ein Beispiel der Ausgabe, wenn ich den Offset ändere. Also müsste es gehen oder? Dann hab ich mir die Mühe mit Marionette ja komplett umsonst gemacht.

1
sid: 123456789asgfafgasdf
lang: de
device: 16
view:
back_to_page: sh_dev
ule_device_name: Bad
Heiztemp: 19
Absenktemp: 17
graphState: 1
Holiday1StartDay: 21
Holiday1StartMonth: 4
Holiday1StartHour: 15
Holiday1EndDay: 5
Holiday1EndMonth: 5
Holiday1EndHour: 15
Holiday1Enabled: 0
Holiday1ID: 1
Holiday2StartDay: 21
Holiday2StartMonth: 4
Holiday2StartHour: 15
Holiday2EndDay: 5
Holiday2EndMonth: 5
Holiday2EndHour: 15
Holiday2Enabled: 0
Holiday2ID: 2
Holiday3StartDay: 21
Holiday3StartMonth: 4
Holiday3StartHour: 15
Holiday3EndDay: 5
Holiday3EndMonth: 5
Holiday3EndHour: 15
Holiday3Enabled: 0
Holiday3ID: 3
Holiday4StartDay: 21
Holiday4StartMonth: 4
Holiday4StartHour: 15
Holiday4EndDay: 5
Holiday4EndMonth: 5
Holiday4EndHour: 15
Holiday4Enabled: 0
Holiday4ID: 4
HolidayEnabledCount: 0
SummerStartDay: 1
SummerStartMonth: 5
SummerEndDay: 1
SummerEndMonth: 9
SummerEnabled: 0
WindowOpenTrigger: 4
WindowOpenTimer: 10
tempsensor: own
Roomtemp: 18.5
ExtTempsensorID: tochoose
Offset: -0.5
enabled: on
mailto:
apply:
oldpage: /net/home_auto_hkr_edit.lua
Titel: Antw:Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 21 April 2021, 15:29:08
Versuch mach ...

Spiel doch mal die 72_FRITZBOX.pm von hier: https://forum.fhem.de/index.php/topic,118150.0.html ein.

Was mich irritiert ist die 1 vor sid:

Ansonsten musst Du jetzt etwas experimentieren.

Unter get findest Du den Befehl luaData. Die Eingabe formatierst Du nun aus der Rückmeldung wie folgt:

- der : wird durch Leerzeichen ersetzt
- der Zeilenumbruch wird durch Leerzeichen ersetzt
- ein fehlender Wert hinter dem Doppelpunkt wird durch nop gefüllt
- die sid Zeile wird nicht benötigt, da die sid durch das FritzBox Modul generiert wird

Bei Deiner Ausgabe würde sich folgendes Ergeben:

lang de device 16 view nop back_to_page sh_dev ule_device_name Bad Heiztemp 19 Absenktemp 17 graphState 1 Holiday1StartDay 21 Holiday1StartMonth 4 Holiday1StartHour 15 Holiday1EndDay 5 Holiday1EndMonth 5 Holiday1EndHour 15 Holiday1Enabled 0 Holiday1ID 1 Holiday2StartDay 21 Holiday2StartMonth 4 Holiday2StartHour 15 Holiday2EndDay 5 Holiday2EndMonth 5 Holiday2EndHour 15 Holiday2Enabled 0 Holiday2ID 2 Holiday3StartDay 21 Holiday3StartMonth 4 Holiday3StartHour 15 Holiday3EndDay 5 Holiday3EndMonth 5 Holiday3EndHour 15 Holiday3Enabled 0 Holiday3ID 3 Holiday4StartDay 21 Holiday4StartMonth 4 Holiday4StartHour 15 Holiday4EndDay 5 Holiday4EndMonth 5 Holiday4EndHour 15 Holiday4Enabled 0 Holiday4ID 4 HolidayEnabledCount 0 SummerStartDay 1 SummerStartMonth 5 SummerEndDay 1 SummerEndMonth 9 SummerEnabled 0 WindowOpenTrigger 4 WindowOpenTimer 10 tempsensor own Roomtemp 18.5 ExtTempsensorID tochoose Offset -0.5 enabled on mailto nop apply nop oldpage /net/home_auto_hkr_edit.lua


Leider gibt es Seiten, da muss man alle Parameter bei Änderungen mitgeben. Dann gibt es Seiten, da reicht es, wenn man die veränderten Parameter mitgibt.

Also einfach mal probieren.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 01 Januar 2024, 11:47:32
Hallo,

ich habe mich in den letzten Tagen auch mal mit diesem Thema beschäftigt und einen Weg gefunden, der Fritzbox die notwendigen Parameter für einen get luaData Aufruf zur Änderung des Offsets zu entlocken. Mit zwei get luaData Aufrufen und parsen der Antworten erhalte ich nun folgenden String:

xhr 1 device 17 view nop back_to_page /smarthome/devices.lua ule_device_name Wohnzimmer(#2) hkr_adaptheat 1 Heiztemp 20,0 Absenktemp 16,0 graphState nop timer_item_0 0800;1;64 timer_item_1 2300;0;64 timer_item_2 0600;1;1 timer_item_3 2200;0;1 timer_item_4 0600;1;2 timer_item_5 2200;0;2 timer_item_6 0600;1;4 timer_item_7 2200;0;4 timer_item_8 0600;1;8 timer_item_9 2200;0;8 timer_item_10 0600;1;16 timer_item_11 2200;0;16 timer_item_12 0800;1;32 timer_item_13 2300;0;32 Holiday1StartDay 31 Holiday1StartMonth 12 Holiday1StartHour 17 Holiday1EndDay 14 Holiday1EndMonth 01 Holiday1EndHour 17 Holiday1Enabled 0 Holiday1ID 1 Holiday2StartDay 31 Holiday2StartMonth 12 Holiday2StartHour 17 Holiday2EndDay 14 Holiday2EndMonth 01 Holiday2EndHour 17 Holiday2Enabled 0 Holiday2ID 2 Holiday3StartDay 31 Holiday3StartMonth 12 Holiday3StartHour 17 Holiday3EndDay 14 Holiday3EndMonth 01 Holiday3EndHour 17 Holiday3Enabled 0 Holiday3ID 3 Holiday4StartDay 31 Holiday4StartMonth 12 Holiday4StartHour 17 Holiday4EndDay 14 Holiday4EndMonth 01 Holiday4EndHour 17 Holiday4Enabled 0 Holiday4ID 4 HolidayEnabledCount 0 SummerStartDay 15 SummerStartMonth 05 SummerEndDay 15 SummerEndMonth 09 SummerEnabled 1 WindowOpenTrigger 12 WindowOpenTimer 10 tempsensor own Roomtemp 19 ExtTempsensorID tochoose Offset -4.0 enabled on mailto nop apply nop lang de page home_auto_hkr_edit
Jetzt gibt es aber ein Problem:
Gebe ich den obigen String als Paramter über die Eingabemaske des Fritzbox-Moduls für den get luaData Befehl ein, funktioniert es wie gewünscht, aber nicht, wenn der Befehl über die Kommandozeile oder aus einer Perl-Routine mittels fhem("...") aufgerufen wird.
Im Fehlerfall wird der Parameterstring offenbar nach timer_item_0 0800 abgeschnitten.

Gibt es irgendeinen Unterschied zwischen den Aufrufen über die Eingabemaske und dem über die Kommandozeile?
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 01 Januar 2024, 12:08:46
Zitat von: tobi1049 am 01 Januar 2024, 11:47:32Hallo,

ich habe mich in den letzten Tagen auch mal mit diesem Thema beschäftigt und einen Weg gefunden, der Fritzbox die notwendigen Parameter für einen get luaData Aufruf zur Änderung des Offsets zu entlocken. Mit zwei get luaData Aufrufen und parsen der Antworten erhalte ich nun folgenden String:

xhr 1 device 17 view nop back_to_page /smarthome/devices.lua ule_device_name Wohnzimmer(#2) hkr_adaptheat 1 Heiztemp 20,0 Absenktemp 16,0 graphState nop timer_item_0 0800;1;64 timer_item_1 2300;0;64 timer_item_2 0600;1;1 timer_item_3 2200;0;1 timer_item_4 0600;1;2 timer_item_5 2200;0;2 timer_item_6 0600;1;4 timer_item_7 2200;0;4 timer_item_8 0600;1;8 timer_item_9 2200;0;8 timer_item_10 0600;1;16 timer_item_11 2200;0;16 timer_item_12 0800;1;32 timer_item_13 2300;0;32 Holiday1StartDay 31 Holiday1StartMonth 12 Holiday1StartHour 17 Holiday1EndDay 14 Holiday1EndMonth 01 Holiday1EndHour 17 Holiday1Enabled 0 Holiday1ID 1 Holiday2StartDay 31 Holiday2StartMonth 12 Holiday2StartHour 17 Holiday2EndDay 14 Holiday2EndMonth 01 Holiday2EndHour 17 Holiday2Enabled 0 Holiday2ID 2 Holiday3StartDay 31 Holiday3StartMonth 12 Holiday3StartHour 17 Holiday3EndDay 14 Holiday3EndMonth 01 Holiday3EndHour 17 Holiday3Enabled 0 Holiday3ID 3 Holiday4StartDay 31 Holiday4StartMonth 12 Holiday4StartHour 17 Holiday4EndDay 14 Holiday4EndMonth 01 Holiday4EndHour 17 Holiday4Enabled 0 Holiday4ID 4 HolidayEnabledCount 0 SummerStartDay 15 SummerStartMonth 05 SummerEndDay 15 SummerEndMonth 09 SummerEnabled 1 WindowOpenTrigger 12 WindowOpenTimer 10 tempsensor own Roomtemp 19 ExtTempsensorID tochoose Offset -4.0 enabled on mailto nop apply nop lang de page home_auto_hkr_edit
Jetzt gibt es aber ein Problem:
Gebe ich den obigen String als Paramter über die Eingabemaske des Fritzbox-Moduls für den get luaData Befehl ein, funktioniert es wie gewünscht, aber nicht, wenn der Befehl über die Kommandozeile oder aus einer Perl-Routine mittels fhem("...") aufgerufen wird.
Im Fehlerfall wird der Parameterstring offenbar nach timer_item_0 0800 abgeschnitten.

Gibt es irgendeinen Unterschied zwischen den Aufrufen über die Eingabemaske und dem über die Kommandozeile?


Hallo,

poste doch bitte einmal Deine Aufrufe.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 01 Januar 2024, 14:15:55
Zitat von: tobi1049 am 01 Januar 2024, 11:47:32Hallo,

ich habe mich in den letzten Tagen auch mal mit diesem Thema beschäftigt und einen Weg gefunden, der Fritzbox die notwendigen Parameter für einen get luaData Aufruf zur Änderung des Offsets zu entlocken. Mit zwei get luaData Aufrufen und parsen der Antworten erhalte ich nun folgenden String:

xhr 1 device 17 view nop back_to_page /smarthome/devices.lua ule_device_name Wohnzimmer(#2) hkr_adaptheat 1 Heiztemp 20,0 Absenktemp 16,0 graphState nop timer_item_0 0800;1;64 timer_item_1 2300;0;64 timer_item_2 0600;1;1 timer_item_3 2200;0;1 timer_item_4 0600;1;2 timer_item_5 2200;0;2 timer_item_6 0600;1;4 timer_item_7 2200;0;4 timer_item_8 0600;1;8 timer_item_9 2200;0;8 timer_item_10 0600;1;16 timer_item_11 2200;0;16 timer_item_12 0800;1;32 timer_item_13 2300;0;32 Holiday1StartDay 31 Holiday1StartMonth 12 Holiday1StartHour 17 Holiday1EndDay 14 Holiday1EndMonth 01 Holiday1EndHour 17 Holiday1Enabled 0 Holiday1ID 1 Holiday2StartDay 31 Holiday2StartMonth 12 Holiday2StartHour 17 Holiday2EndDay 14 Holiday2EndMonth 01 Holiday2EndHour 17 Holiday2Enabled 0 Holiday2ID 2 Holiday3StartDay 31 Holiday3StartMonth 12 Holiday3StartHour 17 Holiday3EndDay 14 Holiday3EndMonth 01 Holiday3EndHour 17 Holiday3Enabled 0 Holiday3ID 3 Holiday4StartDay 31 Holiday4StartMonth 12 Holiday4StartHour 17 Holiday4EndDay 14 Holiday4EndMonth 01 Holiday4EndHour 17 Holiday4Enabled 0 Holiday4ID 4 HolidayEnabledCount 0 SummerStartDay 15 SummerStartMonth 05 SummerEndDay 15 SummerEndMonth 09 SummerEnabled 1 WindowOpenTrigger 12 WindowOpenTimer 10 tempsensor own Roomtemp 19 ExtTempsensorID tochoose Offset -4.0 enabled on mailto nop apply nop lang de page home_auto_hkr_edit
Jetzt gibt es aber ein Problem:
Gebe ich den obigen String als Paramter über die Eingabemaske des Fritzbox-Moduls für den get luaData Befehl ein, funktioniert es wie gewünscht, aber nicht, wenn der Befehl über die Kommandozeile oder aus einer Perl-Routine mittels fhem("...") aufgerufen wird.
Im Fehlerfall wird der Parameterstring offenbar nach timer_item_0 0800 abgeschnitten.

Gibt es irgendeinen Unterschied zwischen den Aufrufen über die Eingabemaske und dem über die Kommandozeile?


Hallo,

wie rufst Du fhem(...) auf. Mit "", also fhem("get ...") oder mit '', also fhem('get ...')? Bei "" finden ggf Zeichenersetzungen statt. Probier also bitte einmal fhem('get ...').

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 01 Januar 2024, 19:36:45
Ich habe beide Varianten probiert, leider kein Unterschied.

Eigentliches Ziel ist es, durch ein NOTIFY folgende Funktion auzurufen:

sub setFBDECToffset($$$)
{
  my ($devName,$FBdev,$newOffset) = @_;
  my $ret = 0;
  my $actOffset;

  ($actOffset) = (ReadingsVal($devName,"tempadjust",0) =~ /([+-?][0-9.]*)/);
  ($newOffset) = ($newOffset =~ /([+-?][0-9.]*)/);    # remove any text

  if( $actOffset != $newOffset ) {
    my $devID = ReadingsVal($devName,"ID",0);

    if( $devID != 0 ) {
      my $arguments = getFBDECTsettings($devID, $FBdev);

      # set newOffset in arguments
      $arguments =~ s/(Offset) ([+-?][0-9.]*)/$1 $newOffset/gm;

      # write newOffset to device
      #$ret = fhem("get $FBdev luaData $arguments");            # Variante mit "
      $ret = fhem('get ' . $FBdev . ' luaData ' . $arguments);  # Variante mit '
    }
  }

  return $ret;
}


Getestet habe ich die Funktion über einen Aufruf in der Kommandozeile:
{ setFBDECToffset("FBDECT_301_Wohnzimmer","meineFritzBox","-5.0 C") }Darauf kam folgende Antwort:
Result of data = 'xhr' => '1'
'device' => '$devID'
'view' => ''
'back_to_page' => '/smarthome/devices.lua'
'ule_device_name' => 'Wohnzimmer(#2)'
'hkr_adaptheat' => '1'
'Heiztemp' => '20,0'
'Absenktemp' => '16,0'
'graphState' => ''
'timer_item_0' => '0800'

----------------------------------------------------------------------
$VAR1 = {
          'pid' => 'overview',
          'data' => { ...
             
                    },
          'time' => [],
          'timeTillLogout' => '1200',
          'sid' => 'ff19651af3add3de'
        };

Unknown command 1, try help.
Unknown command 64, try help.
Unknown command 64, try help.
Unknown command 1, try help.
Unknown command 1, try help.
Unknown command 1, try help.
Unknown command 1, try help.
Unknown command 2, try help.
Unknown command 2, try help.
Unknown command 1, try help.
Unknown command 4, try help.
Unknown command 4, try help.
Unknown command 1, try help.
Unknown command 8, try help.
Unknown command 8, try help.
Unknown command 1, try help.
Unknown command 16, try help.
Unknown command 16, try help.
Unknown command 1, try help.
Unknown command 32, try help.
Unknown command 32, try help.


Weil das nicht funktionierte, habe ich den direkten Aufruf über die Kommandozeile probiert um auszuschließen, dass es möglicherweise mit der Funktion getFBDECTsettings() zu tun hat, die mir die Parameter liefert:
{ fhem("get meineFritzBox luaData xhr 1 device 17 view nop back_to_page /smarthome/devices.lua ule_device_name Wohnzimmer(#2) hkr_adaptheat 1 Heiztemp 20,0 Absenktemp 16,0 graphState nop timer_item_0 0800;1;64 timer_item_1 2300;0;64 timer_item_2 0600;1;1 timer_item_3 2200;0;1 timer_item_4 0600;1;2 timer_item_5 2200;0;2 timer_item_6 0600;1;4 timer_item_7 2200;0;4 timer_item_8 0600;1;8 timer_item_9 2200;0;8 timer_item_10 0600;1;16 timer_item_11 2200;0;16 timer_item_12 0800;1;32 timer_item_13 2300;0;32 Holiday1StartDay 31 Holiday1StartMonth 12 Holiday1StartHour 17 Holiday1EndDay 14 Holiday1EndMonth 01 Holiday1EndHour 17 Holiday1Enabled 0 Holiday1ID 1 Holiday2StartDay 31 Holiday2StartMonth 12 Holiday2StartHour 17 Holiday2EndDay 14 Holiday2EndMonth 01 Holiday2EndHour 17 Holiday2Enabled 0 Holiday2ID 2 Holiday3StartDay 31 Holiday3StartMonth 12 Holiday3StartHour 17 Holiday3EndDay 14 Holiday3EndMonth 01 Holiday3EndHour 17 Holiday3Enabled 0 Holiday3ID 3 Holiday4StartDay 31 Holiday4StartMonth 12 Holiday4StartHour 17 Holiday4EndDay 14 Holiday4EndMonth 01 Holiday4EndHour 17 Holiday4Enabled 0 Holiday4ID 4 HolidayEnabledCount 0 SummerStartDay 15 SummerStartMonth 05 SummerEndDay 15 SummerEndMonth 09 SummerEnabled 1 WindowOpenTrigger 12 WindowOpenTimer 10 tempsensor own Roomtemp 19 ExtTempsensorID tochoose Offset -4.0 enabled on mailto nop apply nop lang de page home_auto_hkr_edit") }
Auch hier macht es keinen Unterschied, ob " oder ' verwendent wird.

Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 01 Januar 2024, 20:00:46
Hallo,

da ich selber kein Smarthome Equipment von AVM habe ist es schwierig Dir hier weiter zu helfen, da ich Deine Versuche nicht nachstellen kann. Ein kurzes suchen für einen DECT 301 zeigt mir nur Treffer, die mir für einen Test zu teuer sind.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 01 Januar 2024, 20:51:59
Zitat von: JoWiemann am 01 Januar 2024, 20:00:46Hallo,

da ich selber kein Smarthome Equipment von AVM habe ist es schwierig Dir hier weiter zu helfen, da ich Deine Versuche nicht nachstellen kann. Ein kurzes suchen für einen DECT 301 zeigt mir nur Treffer, die mir für einen Test zu teuer sind.

Grüße Jörg

Kein Problem.
Ich vermute, dass es irgendeine Kleinigkeit ist.
Das Problem ist offenbar das ';' in den timer_item_x Parameter. Ersetze ich es durch ein anderes z.B. ','  oder '%3B' wird die Anfrage komplett übertragen, nur quittiert die Fritzbox dann nicht das apply, sondern liefert das HTML für die Einstellungsseite.
Ich werde noch etwas weiter tüfteln...

Danke für deine Mühe bis hierher.



Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 02 Januar 2024, 07:24:04
Zitat von: tobi1049 am 01 Januar 2024, 20:51:59Kein Problem.
Ich vermute, dass es irgendeine Kleinigkeit ist.
Das Problem ist offenbar das ';' in den timer_item_x Parameter. Ersetze ich es durch ein anderes z.B. ','  oder '%3B' wird die Anfrage komplett übertragen, nur quittiert die Fritzbox dann nicht das apply, sondern liefert das HTML für die Einstellungsseite.
Ich werde noch etwas weiter tüfteln...

Danke für deine Mühe bis hierher.

Guten Morgen,

hast Du schon mal einen \ vor dem ; versucht?

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 02 Januar 2024, 11:40:14
Zitat von: JoWiemann am 02 Januar 2024, 07:24:04hast Du schon mal einen \ vor dem ; versucht?

Ja, dann gibt es folgende Antwort:
Result of data = 'xhr' => '1'
'device' => '$devID'
'view' => ''
'back_to_page' => '/smarthome/devices.lua'
'ule_device_name' => 'Wohnzimmer(#2)'
'hkr_adaptheat' => '1'
'Heiztemp' => '20,0'
'Absenktemp' => '16,0'
'graphState' => ''
'timer_item_0' => '0800\'

----------------------------------------------------------------------
$VAR1 = {
          'pid' => 'overview',
          'data' => { ...
             
                    },
          'time' => [],
          'timeTillLogout' => '1200',
          'sid' => 'ff19651af3add3de'
        };

Unknown command 1\, try help.
Unknown command 64, try help.
Unknown command 0\, try help.
Unknown command 64, try help.
Unknown command 1\, try help.
Unknown command 1, try help.
Unknown command 0\, try help.
Unknown command 1, try help.
Unknown command 1\, try help.
Unknown command 2, try help.
Unknown command 0\, try help.
Unknown command 2, try help.
Unknown command 1\, try help.
Unknown command 4, try help.
Unknown command 0\, try help.
Unknown command 4, try help.
Unknown command 1\, try help.
Unknown command 8, try help.
Unknown command 0\, try help.
Unknown command 8, try help.
Unknown command 1\, try help.
Unknown command 16, try help.
Unknown command 0\, try help.
Unknown command 16, try help.
Unknown command 1\, try help.
Unknown command 32, try help.
Unknown command 0\, try help.
Unknown command 32, try help.

Aber auf diese Frage habe ich jetzt eine Antwort:
Zitat von: tobi1049 am 01 Januar 2024, 11:47:32Gibt es irgendeinen Unterschied zwischen den Aufrufen über die Eingabemaske und dem über die Kommandozeile?
Über die Eingabemaske erfolgt der get luaData Aufruf über einen HTTP-Request. In diesem Fall ist dann der Parameterstring komplett uri_encoded, doch bringt mich das nicht wirklich weiter.
Im Modul 72_FRITZBOX.pm kommt der Parameterstring nämlich wieder uri_decoded in der Funktion FRITZBOX_Get an.

Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 02 Januar 2024, 12:11:00
Zitat von: tobi1049 am 01 Januar 2024, 20:51:59Ich vermute, dass es irgendeine Kleinigkeit ist.
Das Problem ist offenbar das ';' in den timer_item_x Parameter. Ersetze ich es durch ein anderes z.B. ','  oder '%3B' wird die Anfrage komplett übertragen, nur quittiert die Fritzbox dann nicht das apply, sondern liefert das HTML für die Einstellungsseite.

Ich habe das Problem gefunden. Das ';' wird während der Ausführung der Funktion fhem() dazu genutzt, den Commandstring in SubCommands zu splitten. Um das zu vermeiden, muss ein ';' mit ';;' escaped werden.
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 02 Januar 2024, 12:41:01
Zitat von: tobi1049 am 02 Januar 2024, 12:11:00
Zitat von: tobi1049 am 01 Januar 2024, 20:51:59Ich vermute, dass es irgendeine Kleinigkeit ist.
Das Problem ist offenbar das ';' in den timer_item_x Parameter. Ersetze ich es durch ein anderes z.B. ','  oder '%3B' wird die Anfrage komplett übertragen, nur quittiert die Fritzbox dann nicht das apply, sondern liefert das HTML für die Einstellungsseite.

Ich habe das Problem gefunden. Das ';' wird während der Ausführung der Funktion fhem() dazu genutzt, den Commandstring in SubCommands zu splitten. Um das zu vermeiden, muss ein ';' mit ';;' escaped werden.


Hm, dass mit dem escapen habe ich auch schon versucht. Führte bei mir nicht zum Erfolg. Funktioniert das wirklich bei Dir?

Ansonsten anbei eine Version, wo Du das ; durch #x003B ersetzen musst. Ich wandele das dann wieder in ein ; um.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 02 Januar 2024, 13:35:40
Zitat von: JoWiemann am 02 Januar 2024, 12:41:01Hm, dass mit dem escapen habe ich auch schon versucht. Führte bei mir nicht zum Erfolg. Funktioniert das wirklich bei Dir?

Ansonsten anbei eine Version, wo Du das ; durch #x003B ersetzen musst. Ich wandele das dann wieder in ein ; um.

Das Ersetzen mit #x003B funktioniert auch in Verbindung mit dem Patch von dir.
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 03 Januar 2024, 17:36:33
Aktuell benötige ich zwei get luaData Aufrufe, um den Parameterstring für die Offset-Änderung zusammenzustellen:
Der erste fordert die Einstellungseite der Fritzbox als HTML ab, ich parse dann aus dem Formular die Presets, auf diese Weise bekomme ich fast alle Infos, außer dem wöchentlichen Zeitplan. Dieser wird nämlich offenbar durch ein javascript erstellt und deshalb wird ein zweiter Aufruf benötigt: get <FritzBox> luaData xhr 1 lang de page sh_dev xhrId all.
In der Antwort sind aber im Grunde alle Infos vorhanden, der erste Aufruf wäre überflüssig.

Nur leider lässt sich die Antwort nur sehr bedingt auswerten, da der Hash mit den Json dekodierten Daten bereits in einen String verwandelt mit vorangestelltem Request zurück kommt.

Daher meine Frage: Ließe sich das Fritzbox-Modul dahingehend erweitern, dass für get LuaData Anfragen der Hash zurückgegeben wird, z.B. durch einen zusätzlichen Parameter oder ein spezielles get luaData Kommando?

So etwas in der Art wurde ja schon für das fritzlog umgesetzt: https://forum.fhem.de/index.php?topic=132790.0 (https://forum.fhem.de/index.php?topic=132790.0)

Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 05 Januar 2024, 10:37:31
Zitat von: tobi1049 am 03 Januar 2024, 17:36:33Nur leider lässt sich die Antwort nur sehr bedingt auswerten, da der Hash mit den Json dekodierten Daten bereits in einen String verwandelt mit vorangestelltem Request zurück kommt.

Daher meine Frage: Ließe sich das Fritzbox-Modul dahingehend erweitern, dass für get LuaData Anfragen der Hash zurückgegeben wird, z.B. durch einen zusätzlichen Parameter oder ein spezielles get luaData Kommando?

So etwas in der Art wurde ja schon für das fritzlog umgesetzt: https://forum.fhem.de/index.php?topic=132790.0 (https://forum.fhem.de/index.php?topic=132790.0)

Hallo Tobi,

möchtest Du nur die HASH Referenz oder wie in FritzLog die Möglichkeit das über eine im Attribut definierte Sub direkt weiter verarbeiten zu können?

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 05 Januar 2024, 10:56:38
Hallo Tobi,

ich habe Dir das jetzt mit [hash] als optionalem Parameter eingebaut.

Bitte schau Dir doch die Sub: sub FRITZBOX_Helper_analyse_Lua_Result($$;@) einmal an. Hier wird die Rückgabe analysiert und auf Fehler reagiert.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 05 Januar 2024, 12:54:13
Zitat von: JoWiemann am 05 Januar 2024, 10:56:38Hallo Tobi,

ich habe Dir das jetzt mit [hash] als optionalem Parameter eingebaut.

Bitte schau Dir doch die Sub: sub FRITZBOX_Helper_analyse_Lua_Result($$;@) einmal an. Hier wird die Rückgabe analysiert und auf Fehler reagiert.

Grüße Jörg
Hallo Jörg,

vielen Dank für die Umsetzung. Im Prinzip ist es genau das, was ich mir vorgestellt habe.
Aber ich bin offenbar zu blöd, das richtig anzuwenden, folgende Funktion soll die Daten mittels luaData Call abholen und auswerten:
sub getFBDECT30x_Settings($$)
{
   my ($devID,$FBdev)= @_;
   my $devData;
   my $response;

   # query device settings
   $response = fhem( "get $FBdev luaData hash xhr 1 lang de page sh_dev xhrId all", 1 );

   $devData = $response->{data}{devices};  # hier entsteht die Referenz auf das Array
 
   ...

Doch die Zeile $devData = $response->{data}{devices}; ergibt folgende Fehlermeldung: Can't use string ("HASH(0x31d2968)") as a HASH ref while "strict refs" in use

Hast du einen Tipp für mich?

Tobias

Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 05 Januar 2024, 15:17:16
Hallo Jörg,

ich glaube, das Problem gefunden zu haben. Es liegt vermutlich in dem Callstack von der Funktion fhem() bis zur Funktion FRITZBOX_Get(), irgendwo wird dort die Hash Referenz in einen String umgewandelt. Ich habe bisher nichts gefunden, wie man das wieder rückgängig machen kann, nur einen Hinweis auf serislisieren und deserialisieren der hash-Daten z.B. per JSON.

Darüber hinaus gab es noch einen Fehler beim Parsen des @val-Array bgzl. des Entfernens des optionalen Parameters 'hash'.

Anbei eine Version mit einem Bugfix für das Parse-Problem. Außerdem habe ich dort den optionalen Parameter in 'json' umbenannt und gebe ein json-string zurück.
Damit funktioniert das für mich.

Tobias
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 05 Januar 2024, 16:48:04
Zitat von: tobi1049 am 05 Januar 2024, 12:54:13sub getFBDECT30x_Settings($$)
{
   my ($devID,$FBdev)= @_;
   my $devData;
   my $response;

   # query device settings
   $response = fhem( "get $FBdev luaData hash xhr 1 lang de page sh_dev xhrId all", 1 );

   $devData = $response->{data}{devices};  # hier entsteht die Referenz auf das Array
 
   ...

Doch die Zeile $devData = $response->{data}{devices}; ergibt folgende Fehlermeldung: Can't use string ("HASH(0x31d2968)") as a HASH ref while "strict refs" in use

Hast du einen Tipp für mich?

Hallo Tobias,

das es sich um eine Referenz handelt musst Du überall -> einsetzen:

$devData = $response->{data}->{devices}

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 05 Januar 2024, 17:43:31
Zitat von: JoWiemann am 05 Januar 2024, 16:48:04
Zitat von: tobi1049 am 05 Januar 2024, 12:54:13sub getFBDECT30x_Settings($$)
{
   my ($devID,$FBdev)= @_;
   my $devData;
   my $response;

   # query device settings
   $response = fhem( "get $FBdev luaData hash xhr 1 lang de page sh_dev xhrId all", 1 );

   $devData = $response->{data}{devices};  # hier entsteht die Referenz auf das Array
 
   ...

Doch die Zeile $devData = $response->{data}{devices}; ergibt folgende Fehlermeldung: Can't use string ("HASH(0x31d2968)") as a HASH ref while "strict refs" in use

Hast du einen Tipp für mich?

Hallo Tobias,

das es sich um eine Referenz handelt musst Du überall -> einsetzen:

$devData = $response->{data}->{devices}

Grüße Jörg

Hallo Jörg,

das hatte ich auch schon probiert, aber es ändert nichts, es führt zu der gleichen Fehlermeldung.

Tobias
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 05 Januar 2024, 18:07:40
Zitat von: tobi1049 am 05 Januar 2024, 15:17:16Hallo Jörg,

Anbei eine Version mit einem Bugfix für das Parse-Problem. Außerdem habe ich dort den optionalen Parameter in 'json' umbenannt und gebe ein json-string zurück.
Damit funktioniert das für mich.

Tobias


Hallo Tobias,

danke, habe ich so übernommen.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: neobiker am 14 Januar 2024, 20:29:00
Hallo,
gibt es jetzt inzwischen eine Möglichkeit den Temperatur Offset (tempadjust) Wert eines AVM Thermostates mit FHEM zu ändern?
Ich benötige das auch, und vermutlich noch viele andere ;-)
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 15 Januar 2024, 07:40:39
Zitat von: tobi1049 am 05 Januar 2024, 15:17:16Anbei eine Version mit einem Bugfix für das Parse-Problem. Außerdem habe ich dort den optionalen Parameter in 'json' umbenannt und gebe ein json-string zurück.
Damit funktioniert das für mich.

Hallo Tobias,

es wäre schön, wenn Du einmal Deine Umsetzung posten würdest. Ich würde das dann als neuen set Befehl in das Modul einbauen.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 17 Januar 2024, 20:06:14
Zitat von: JoWiemann am 15 Januar 2024, 07:40:39
Zitat von: tobi1049 am 05 Januar 2024, 15:17:16Anbei eine Version mit einem Bugfix für das Parse-Problem. Außerdem habe ich dort den optionalen Parameter in 'json' umbenannt und gebe ein json-string zurück.
Damit funktioniert das für mich.

Hallo Tobias,

es wäre schön, wenn Du einmal Deine Umsetzung posten würdest. Ich würde das dann als neuen set Befehl in das Modul einbauen.

Grüße Jörg

Sehr gerne.

Das setzen eines neuen Offset erfolgt durch Aufruf der folgenden Funktion:
sub setFBDECToffset($$$)
{
  my ($devName,$FBdev,$newOffset) = @_;
  my $ret = "Nothing to do.";
  my $actOffset;
  my $targetTemp;

  ($targetTemp) = (ReadingsVal($devName,"desired-temp",0) =~ /([+-]?[0-9.]*)/); # remove any text
  ($actOffset) = (ReadingsVal($devName,"tempadjust",0) =~ /([+-]?[0-9.]*)/);    # remove any text
  ($newOffset) = ($newOffset =~ /([+-]?[0-9.]*)/);                              # remove any text

  if( $actOffset != $newOffset ) {
    my $devID = ReadingsVal($devName,"ID",0);

    if( $devID != 0 ) {
      my %args = %{ getFBDECT30x_Settings($devID, $FBdev) };

      my $arguments = 'xhr 1 view nop back_to_page /smarthome/devices.lua apply nop lang de page home_auto_hkr_edit';
     
      foreach( sort keys %args ) {
        $arguments = $arguments . ' ' . $_ . ' ' . $args{$_};
      }

      # set newOffset in arguments
      $arguments =~ s/(Offset) ([+-]?[0-9.]*)/$1 $newOffset/gm;
      $arguments = encode('UTF-8', $arguments);
     
      # write newOffset to device
      my $response = fhem("get $FBdev luaData json $arguments",1);

      my $resp = decode_json( $response );
     
      if( ( exists $resp->{'data'}{'apply'} )&&( $resp->{'data'}{'apply'} eq "ok" ) ) {
        # restore desired-temp setting
        fhem( "set $devName desired-temp $targetTemp", 1 );
        $ret = "setting offset to $newOffset C successful!";
      } else {
        $ret = "setting offset to $newOffset C failed!";
      }

    } else {
      $ret = "Invalid device ID <$devID>!";
    }
  }

  return $ret;
}

Die Funktion erwartet als Parameter den Namen des FBDECT301-Gerätes, den FHEM-Namen der Fritzbox und den neuen Offset-Wert.
Der Wert wird nur geändert, wenn er ungleich des aktuell gesetzen Wert ist.
Beim lua-Aufruf der Einstellungsseite müssen, soweit ich das herausgefunden habe, alle Parameter mit übergeben werden. Das Fehlen von Werten deaktiviert meist die jeweilige Funktion.
Die Parameter werden durch einen weiteren Get luaData-Aufruf gesammelt, das erledigt die Funktion getFBDECT30x_Settings($$) (s.u.)
Nach erfolgreichem Setzen eines neuen Offsets muss die Soll-Temperatur neu gesetzt werden, weil sie dabei ggfs. überschrieben wurde.

Hier noch der Queltext der zweiten Funktion:

sub getFBDECT30x_Settings($$)
{
  my ($devID,$FBdev)= @_;
  my $devData;
  my $response;

  # query device settings
  $response = fhem( "get $FBdev luaData json xhr 1 lang de page sh_dev xhrId all", 1 );

  $response = decode_json( $response );

  $devData = $response->{'data'}{'devices'};  # hier entsteht die Referenz auf das Array

  my $dayOfWeekMap = { 'SUN' => 64, 'SAT' => 32, 'FRI' => 16, 'THU' => 8, 'WED' => 4, 'TUE' => 2, 'MON' => 1 };
  my $unitData;
  my $skills;
  my $allTimeSchedules;
  my $timeSchedule;
  my $debug = "";
  my %ret;

  # find entry for requested devID
  for my $i (0 .. @{$devData} - 1) {
    if( $devData->[$i]{'id'} eq $devID ) {

      $ret{device}          = $devID;
      $ret{ule_device_name} = $devData->[$i]{'displayName'};
      if( $devData->[$i]{'pushService'}{'isEnabled'} ) {
        $ret{enabled}       = "on";
        $ret{mailto}        = $devData->[$i]{'pushService'}{'mailAddress'};
      }
     
      # find needed unit
      $unitData = $devData->[$i]{'units'};
      for my $j (0 .. scalar @{$unitData} - 1) {
        my $unitData = $unitData->[$j];
 
        if( $unitData->{'type'} eq 'THERMOSTAT' ) {
          $skills = $unitData->{'skills'}[0];
          # parse preset temperatures
          my $presets = $skills->{'presets'};
          for my $i ( 0 .. 1 ) {
            $ret{Absenktemp} = $presets->[$i]{'temperature'} if( $presets->[$i]{'name'} eq 'LOWER_TEMPERATURE' );
            $ret{Heiztemp} = $presets->[$i]{'temperature'} if( $presets->[$i]{'name'} eq 'UPPER_TEMPERATURE' );
          }
          $ret{hkr_adaptheat} = ( ( $skills->{'adaptivHeating'}{'isEnabled'} ) ? 1 : 0 );
          $ret{ExtTempsensorID} = $skills->{'usedTempSensor'}{'id'};
          $ret{WindowOpenTrigger} = $skills->{'temperatureDropDetection'}{'sensitivity'};
          $ret{WindowOpenTimer} = $skills->{'temperatureDropDetection'}{'doNotHeatOffsetInMinutes'};

          # find needed time schedule
          $allTimeSchedules = $skills->{'timeControl'}{'timeSchedules'};
          for my $ts (0 .. scalar @{$allTimeSchedules} - 1) {
            # parse weekly timetable
            if( $allTimeSchedules->[$ts]{'name'} eq 'TEMPERATURE' ) {
              $timeSchedule = $allTimeSchedules->[$ts]{'actions'};
              my $NumEntries = scalar @{$timeSchedule};
              my @timerItems = ();
             
              for my $i (0 .. $NumEntries - 1) {
                my $startTime   = $timeSchedule->[$i]{'timeSetting'}{'startTime'};
                my $dayOfWeek   = $timeSchedule->[$i]{'timeSetting'}{'dayOfWeek'};
                my $temperature = $timeSchedule->[$i]{'description'}{'presetTemperature'}{'temperature'};
                my %timerItem;
                my $newItem = 1;
               
                $debug = "$debug $i $startTime $temperature $dayOfWeek => ";

                $startTime   =~ s/([0-9]{2}):([0-9]{2}):([0-9]{2})/$1$2/;
                $temperature = ( ( $temperature eq $ret{Heiztemp} ) ? 1 : 0 );
                $dayOfWeek   = $dayOfWeekMap->{$dayOfWeek};
               
                $timerItem{'startTime'}   = $startTime;
                $timerItem{'dayOfWeek'}   = $dayOfWeek;
                $timerItem{'temperature'} = $temperature;

                foreach (@timerItems) {
                  if(( $_->{'startTime'} eq $startTime )&&( $_->{'temperature'} eq $temperature ) ) {
                      $_->{'dayOfWeek'} = $_->{'dayOfWeek'} + $dayOfWeek;
                      $newItem = 0;
                      last;
                  }
                }
                if( $newItem ) {
                  push( @timerItems, \%timerItem );
                }

                $debug = "$debug $startTime;$temperature;$dayOfWeek \n";
              }
              my $j = 0;
              foreach (@timerItems) {
                $ret{"timer_item_$j"} = $_->{'startTime'}.';;'.$_->{'temperature'}.';;'.$_->{'dayOfWeek'};
                $debug = "$debug $_->{'startTime'};;$_->{'temperature'};;$_->{'dayOfWeek'} \n";
                $j ++;
              }
            } elsif( $allTimeSchedules->[$ts]{'name'} eq 'HOLIDAYS' ) {
              $timeSchedule = $allTimeSchedules->[$ts]{'actions'};
              my $NumEntries = scalar @{$timeSchedule};
 
              $ret{"HolidayEnabledCount"} = 0;
              for my $i (0 .. $NumEntries - 1) {
                my $holiday     = "Holiday" . eval($i + 1);
                my $startDate   = $timeSchedule->[$i]{'timeSetting'}{'startDate'};
                my $startTime   = $timeSchedule->[$i]{'timeSetting'}{'startTime'};
                my $endDate     = $timeSchedule->[$i]{'timeSetting'}{'endDate'};
                my $endTime     = $timeSchedule->[$i]{'timeSetting'}{'endTime'};
               
                $ret{$holiday . "ID"}        = $i + 1;
                $ret{$holiday . "Enabled"}   = ( ( $timeSchedule->[$i]{'timeSetting'}{'isEnabled'} ) ? 1 : 0 );
                $ret{$holiday ."StartDay"}   = $startDate;
                $ret{$holiday ."StartDay"}   =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$3/;
                $ret{$holiday ."StartMonth"} = $startDate;
                $ret{$holiday ."StartMonth"} =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$2/;
                $ret{$holiday ."StartHour"}  = $startTime;
                $ret{$holiday ."StartHour"}  =~ s/([0-9]{2}):([0-9]{2}):([0-9]{2})/$1/;
               
                $ret{$holiday ."EndDay"}     = $endDate;
                $ret{$holiday ."EndDay"}     =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$3/;
                $ret{$holiday ."EndMonth"}   = $endDate;
                $ret{$holiday ."EndMonth"}   =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$2/;
                $ret{$holiday ."EndHour"}    = $endTime;
                $ret{$holiday ."EndHour"}    =~ s/([0-9]{2}):([0-9]{2}):([0-9]{2})/$1/;
               
                $ret{"HolidayEnabledCount"} ++ if( 1 == $ret{$holiday . "Enabled"} );
               
              }

            } elsif( $allTimeSchedules->[$ts]{'name'} eq 'SUMMER_TIME' ) {
              $timeSchedule = $allTimeSchedules->[$ts]{'actions'};
              my $NumEntries = scalar @{$timeSchedule};
 
              for my $i (0 .. $NumEntries - 1) {
                my $startDate   = $timeSchedule->[$i]{'timeSetting'}{'startDate'};
                my $endDate     = $timeSchedule->[$i]{'timeSetting'}{'endDate'};
               
                $ret{SummerStartDay}   = $startDate;
                $ret{SummerStartDay}   =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$3/;
                $ret{SummerStartMonth} = $startDate;
                $ret{SummerStartMonth} =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$2/;
               
                $ret{SummerEndDay}     = $endDate;
                $ret{SummerEndDay}     =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$3/;
                $ret{SummerEndMonth}   = $endDate;
                $ret{SummerEndMonth}   =~ s/([0-9]{4})-([0-9]{2})-([0-9]{2})/$2/;
               
                $ret{SummerEnabled}    = ( ( $timeSchedule->[$i]{'timeSetting'}{'isEnabled'} ) ? 1 : 0 );
              }

            }
          }
        } elsif ( $unitData->{'type'} eq 'TEMPERATURE_SENSOR' ) {
          $skills = $unitData->{'skills'}[0];
          $ret{Offset}     = $skills->{'offset'};
          $ret{Roomtemp}   = $skills->{'currentInCelsius'};
          $ret{tempsensor} = $ret{Roomtemp} - $ret{Offset};
        }
      }
      last;
    }
  }
   
  #return $debug . "\n" . Dumper(\%ret);
  return \%ret;
}


Das ganze ist aber noch nicht mehr als eine Geradeaus-Implementierung. Es fehlt noch das Abfangen von nicht erwarteten Antworten.
Auch kann nicht ausgeschlossen werden, dass bei Anwendung Einstellungen am Thermostat verloren gehen können.
Vielleicht kann man das alles auch noch eleganter umsetzen, aber das war mein erster Kontakt mit Perl...

Tobias
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 19 Januar 2024, 14:49:02
Zitat von: tobi1049 am 17 Januar 2024, 20:06:14Das ganze ist aber noch nicht mehr als eine Geradeaus-Implementierung. Es fehlt noch das Abfangen von nicht erwarteten Antworten.
Auch kann nicht ausgeschlossen werden, dass bei Anwendung Einstellungen am Thermostat verloren gehen können.
Vielleicht kann man das alles auch noch eleganter umsetzen, aber das war mein erster Kontakt mit Perl...

Tobias


Hallo Tobias,

danke für die Bereitstellung Deiner Lösung. Wird allerdings etwas dauern, bis ich mir das genauer ansehen kann und ins Modul übernehmen kann.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 25 Januar 2024, 13:59:04
Hallo Tobias,

ich bin nun dabei Deine Lösung zu implementieren.

Erster Schritt:

- unter get <name> luaInfo gibt es jetzt den Parameter smartHome
- neues Attribut attr <name> enableSmartHome [off|all|group|device]
  aktivieren von Readings shgroup und/oder shdevice

Würdest Du das bitte schon mal testen. Danke Dir.

Grüße Jörg

An alle die SmartHome Geräte an der FritzBox angemeldet haben. Bitte einmal testen, ob die Geräte in der Liste erscheinen. Danke Euch.
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: juemuc am 26 Januar 2024, 13:40:38
Hallo Jörg,

bei mir werden die Smarthomegeräte angezeigt. Bei denReadings passt es aber noch nicht ganz shdevice20 bzw shdevice20000.

Viele Grüße
Jürgen
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: enno am 26 Januar 2024, 15:31:50
Zitat von: JoWiemann am 25 Januar 2024, 13:59:04An alle die SmartHome Geräte an der FritzBox angemeldet haben. Bitte einmal testen, ob die Geräte in der Liste erscheinen. Danke Euch.

Moin Jörg,

ich bekomme meine FRITZ!DECT 400, FRITZ!DECT 200 und FRITZ!DECT 210 mit der Fritzbox 7590 angezeigt.

Gruss
  Enno
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 26 Januar 2024, 16:01:41
Zitat von: juemuc am 26 Januar 2024, 13:40:38Hallo Jörg,

bei mir werden die Smarthomegeräte angezeigt. Bei denReadings passt es aber noch nicht ganz shdevice20 bzw shdevice20000.

Viele Grüße
Jürgen

Hallo Jürgen,

würdest Du bitte einmal get <name> luaData xhr 1 lang de page sh_dev xhrId all ausführen und mir den gesammten Output schicken. Ich vermute die 20000 ist tatsächlich die von der FB vergebene ID.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 26 Januar 2024, 16:02:37
Zitat von: enno am 26 Januar 2024, 15:31:50
Zitat von: JoWiemann am 25 Januar 2024, 13:59:04An alle die SmartHome Geräte an der FritzBox angemeldet haben. Bitte einmal testen, ob die Geräte in der Liste erscheinen. Danke Euch.

Moin Jörg,

ich bekomme meine FRITZ!DECT 400, FRITZ!DECT 200 und FRITZ!DECT 210 mit der Fritzbox 7590 angezeigt.

Gruss
  Enno

Hallo Enno,

würdest Du bitte einmal get <name> luaData xhr 1 lang de page sh_dev xhrId all ausführen und mir den gesammten Output schicken. Der ganze DECT Zoo ist mir einfach zu teuer.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: juemuc am 26 Januar 2024, 17:10:55
Hallo Jörg,

anbei die gewünschte Info.

Viele Grüße
Jürgen
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: juemuc am 26 Januar 2024, 18:11:47
Hallo Jörg,

anbei noch ein paar Zusatzinfos:


Erst wenn ich das Attribut enableSmartHome auf off und dann wieder auf all ändere, sind die alten readings weg.

Viele Grüße
Jürgen
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: enno am 26 Januar 2024, 18:21:21
Moin Jörg,

hier die Infos der Teile, die ich habe.

Gruss
  Enno
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 26 Januar 2024, 20:13:59
Zitat von: juemuc am 26 Januar 2024, 18:11:47Erst wenn ich das Attribut enableSmartHome auf off und dann wieder auf all ändere, sind die alten readings weg.

Viele Grüße
Jürgen

Hallo Jürgen,

danke für die Informationen. Das automatische Löschen habe ich noch nicht eingebaut. Kommt noch.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 26 Januar 2024, 20:15:50
Zitat von: enno am 26 Januar 2024, 18:21:21Moin Jörg,

hier die Infos der Teile, die ich habe.

Gruss
  Enno

Hallo Enno,

danke Dir und ein schönes Wochenende.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 27 Januar 2024, 08:44:53
Zitat von: JoWiemann am 25 Januar 2024, 13:59:04Hallo Tobias,

ich bin nun dabei Deine Lösung zu implementieren.

Erster Schritt:

- unter get <name> luaInfo gibt es jetzt den Parameter smartHome
- neues Attribut attr <name> enableSmartHome [off|all|group|device]
  aktivieren von Readings shgroup und/oder shdevice

Würdest Du das bitte schon mal testen. Danke Dir.

Grüße Jörg

An alle die SmartHome Geräte an der FritzBox angemeldet haben. Bitte einmal testen, ob die Geräte in der Liste erscheinen. Danke Euch.

Hallo Jörg,

ich habe das Modul bei mir getestet: alle FRITZ!DECT301 werden sowohl in der Tabelle als auch in den Readings korrekt angezeigt.
Gruppen habe ich keine definiert. Daher habe ich das nicht getestet.
Bei der Tabellendarstellung ist mir aufgefallen, dass sich die Überschrift der Devices-Tabelle nicht über alle Spalten erstreckt.

Tobias
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 29 Januar 2024, 15:45:53
Hallo,

anbei eine neue Beta mit folgendem set Befehl:

set <name> smartHome <deviceID> <tmpOffSet:value>

Bei den DECT Steckdosen sollten jetzt auch folgende Readings zur Verfügung stehen:
shdevice<id>_voltage
shdevice<$id>_power
shdevice<id>_current
shdevice<$id>_consumtion

Die commandRef ist noch nicht gepflegt.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: enno am 29 Januar 2024, 19:26:54
Zitat von: JoWiemann am 29 Januar 2024, 15:45:53Bei den DECT Steckdosen sollten jetzt auch folgende Readings zur Verfügung stehen:

Das tun sie bei mir für FRITZ!DECT 200 und FRITZ!DECT 210 auch. Hat geklappt.

Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 29 Januar 2024, 21:40:39
Hallo,

anbei eine neue Beta 3.

- commandRef ist gepflegt
- neues Attribut attr <name> enableReadingsFilter <liste>
Aktiviert Filter für die Übernahme von Readings (aktuell SmartHome und Dect). Ein Readings, dass dem Filter entspricht wird
um einen Punkt als erstes Zeichen ergänzt. Somit erscheint das Reading nicht im Web-Frontend, ist aber über ReadingsVal erreichbar.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 29 Januar 2024, 22:59:09
Zitat von: JoWiemann am 29 Januar 2024, 21:40:39Hallo,

anbei eine neue Beta 3.

- commandRef ist gepflegt
- neues Attribut attr <name> enableReadingsFilter <liste>
Aktiviert Filter für die Übernahme von Readings (aktuell SmartHome und Dect). Ein Readings, dass dem Filter entspricht wird
um einen Punkt als erstes Zeichen ergänzt. Somit erscheint das Reading nicht im Web-Frontend, ist aber über ReadingsVal erreichbar.

Grüße Jörg

Hallo Jörg,

ich habe den Befehl
set <name> smartHome <deviceID> <tmpOffSet:value>
mit der Beta 3 getestet:

In Zeile 8006 muss das doppelte ';' éntfernt werden:
$ret{"timer_item_$j"} = $_->{'startTime'}.';'.$_->{'temperature'}.';'.$_->{'dayOfWeek'};Das war zum Escapen, da der Aufruf in meiner Lösung über die fhem()-Funktion lief. Hier führt es dazu, dass die Fritz!box die timer_item-Parameter ignoriert und die Zeitplan verloren geht.
Dann gibt es noch ein Problem mit dem Parameter ule_device_name wenn dieser Umlaute enthält.

Tobias
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 30 Januar 2024, 06:43:38
Zitat von: tobi1049 am 29 Januar 2024, 22:59:09Hallo Jörg,

ich habe den Befehl
set <name> smartHome <deviceID> <tmpOffSet:value>
mit der Beta 3 getestet:

In Zeile 8006 muss das doppelte ';' éntfernt werden:
$ret{"timer_item_$j"} = $_->{'startTime'}.';'.$_->{'temperature'}.';'.$_->{'dayOfWeek'};Das war zum Escapen, da der Aufruf in meiner Lösung über die fhem()-Funktion lief. Hier führt es dazu, dass die Fritz!box die timer_item-Parameter ignoriert und die Zeitplan verloren geht.
Dann gibt es noch ein Problem mit dem Parameter ule_device_name wenn dieser Umlaute enthält.

Tobias

Hallo Tobias,

danke fürs Testen und die Hinweise.

PS: kannst Du das Umlaut Problem kurz beschreiben. Danke

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 30 Januar 2024, 15:50:04
Hallo,

anbei eine neue Beta 4.

set <name> smartHome <deviceID> <tempOffset:value>
Ändert den Temperatur Offset auf den Wert:value für das SmartHome Gerät mit der angegebenen ID.

set <name> smartHome <deviceID> <tmpAdjust:value>
Setzt den Heizköperregeler temporär auf die Temperatur: value.

set <name> smartHome <deviceID> <tmpPerm:0|1>
Schalt den Heizköperregeler auf permanent aus oder an.

Die ID kann über get <name> luaInfo <smartHome> ermittelt werden.
Das Ergebnis des Befehls wird im Reading retStat_smartHome abgelegt.

Benötigt FRITZ!OS 7.21 oder höher.

Fehler bei Umlauten beseitigt. Namen/Texte müssen mit ISO-8859-1 kodiert werden.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 30 Januar 2024, 19:40:42
Hallo,

ich habe noch einen Fehler in der Parameterübergabe korrigiert. Anbei eine neue Beta 5.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: juemuc am 30 Januar 2024, 21:14:27
Hallo Jörg,

ein paar Anmerkungen von mir:

Auf der einen Seite finde ich es gut, wenn man über ein Modul "alle" Funktionen einer Fritzbox nutzen kann, auf der anderen Seite finde ich die Bereitstellung der einzelnen Smarthome-Geräte über FBAHAHTTP recht gelungen. Dies nur als Diskusionspunkte. Unabhängig davon finde ich die Leistung der Enwickler hier GROßARTIK. Vielen Dank an Euch.

Viele Grüße
Jürgen
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 31 Januar 2024, 08:29:27
Zitat von: juemuc am 30 Januar 2024, 21:14:27Auf der einen Seite finde ich es gut, wenn man über ein Modul "alle" Funktionen einer Fritzbox nutzen kann, auf der anderen Seite finde ich die Bereitstellung der einzelnen Smarthome-Geräte über FBAHAHTTP recht gelungen. Dies nur als Diskusionspunkte. Unabhängig davon finde ich die Leistung der Enwickler hier GROßARTIK. Vielen Dank an Euch.

Viele Grüße
Jürgen

Hallo Jürgen,
ist einfach Spielerei oder Gehirn Jogging von mir.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: neobiker am 31 Januar 2024, 22:21:35
Zitat von: juemuc am 30 Januar 2024, 21:14:27Hallo Jörg,

ein paar Anmerkungen von mir:
  • set <name> smartHome <deviceID> <tempOffset:value> funktioniert.
  • Alle anderen Funktionen sind bereits im Modul FBAHAHTTP enthalten.
  • Ist diese Entwicklung so sinnvoll? Was kann ggf das Modull FBAHAHTTP leisten?

Auf der einen Seite finde ich es gut, wenn man über ein Modul "alle" Funktionen einer Fritzbox nutzen kann, auf der anderen Seite finde ich die Bereitstellung der einzelnen Smarthome-Geräte über FBAHAHTTP recht gelungen. Dies nur als Diskusionspunkte. Unabhängig davon finde ich die Leistung der Enwickler hier GROßARTIK. Vielen Dank an Euch.

Viele Grüße
Jürgen

Ich finde es nicht so schön, wenn die Fritzbox von mehreren Modulen parallel zyklisch ständig abgefragt wird. Ich begrüsse daher die aktuelle Bereitstellung der Funktionen. Jeder kann sich raussuchen, welches Modul er verwendet um seine Szenarien umzusetzen.

Dickes Lob an alle !!!
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: tobi1049 am 04 Februar 2024, 08:45:37
Hallo Jörg,

mir war aufgefallen, dass in meinem Lösungsansatz die "interactionControls", als Tastensperre usw. nicht berücksichtigt wurden, d.h. diese Einstellungen gingen verloren.
Ich habe das nachgepflegt, s. Anhang. Vielleich magst du es ja übernehmen.

Tobias
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 04 Februar 2024, 09:29:56
Zitat von: tobi1049 am 04 Februar 2024, 08:45:37Hallo Jörg,

mir war aufgefallen, dass in meinem Lösungsansatz die "interactionControls", als Tastensperre usw. nicht berücksichtigt wurden, d.h. diese Einstellungen gingen verloren.
Ich habe das nachgepflegt, s. Anhang. Vielleich magst du es ja übernehmen.

Tobias
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 04 Februar 2024, 09:31:07
Zitat von: tobi1049 am 04 Februar 2024, 08:45:37Hallo Jörg,

mir war aufgefallen, dass in meinem Lösungsansatz die "interactionControls", als Tastensperre usw. nicht berücksichtigt wurden, d.h. diese Einstellungen gingen verloren.
Ich habe das nachgepflegt, s. Anhang. Vielleich magst du es ja übernehmen.

Tobias

Hallo Tobias,

danke, mache ich.

Grüße Jörg
Titel: Aw: Offset Einstellung Fritz Dect 301
Beitrag von: JoWiemann am 05 Februar 2024, 13:21:29
Zitat von: JoWiemann am 04 Februar 2024, 09:31:07Hallo Tobias,

danke, mache ich.

Grüße Jörg


Hallo,

kommt morgen mit dem Update.

Grüße Jörg