Modul weekprofile + FHEMWEB widget

Begonnen von Risiko, 23 Dezember 2015, 20:16:54

Vorheriges Thema - Nächstes Thema

Risiko

Sorry für die späte Reaktion.

Habe leider nicht viel Zeit für das Thema und es ist leider für mich auch sehr unwichtig geworden.
Es sieht ja wieder mal so aus, dass es bei HM nicht eindeutig ist. Wie kann/soll man das genau unterscheiden können?

Reading: R-1.P1_ vs R-P1_ was ist richtig bei diesem Typ und was ist mit der aktuell umgesetzten Variante?
Zitat von: rogerknop am 15 Oktober 2023, 19:33:48Bei mir war das ähnlich, allerdings haben die Readings bei mir den Präfix "R-1.P1_" und ich brauche die 1... 
Also wa ist nun "richtig"?


rogerknop

#721
Evtl. weil ich die CCU2 nutze!?
Oder Firmware Update?
Die alte Änderung für die nicht IP Geräte #msg1191311 musste ich nun nämlich wieder ausbauen :-(
Das mit der Homematic API erscheint mir nicht gerade sehr stabil.
Grüße, Roger

rogerknop

Zitat von: KernSani am 30 November 2023, 23:18:00
Zitat von: rogerknop am 15 Oktober 2023, 19:33:48Hallo Risiko!
Ich hatte in #695 schon einmal Code Vorschläge für HMCCU Thermostate geschickt, die auch eingebaut wurden.
Nun habe ich einen HM IP Thermostat und da haben die Weekprofiles leider nicht mehr funktioniert.
Nach einigen Analysen habe ich es nun hinbekommen, dass es auch mit dem HM IP funktioniert und wollte die Änderungen hier teilen. Es wäre schön, wenn Du prüfen könntest, ob sie evtl. in deine Lösung wandern könnten.

Hier die Anpassungen in der Funktion weekprofile_sendDevProfile (ca. Zeile 492):
  } elsif ($type =~ /HMCCU.*/){
    $cmd .= "set $device config device" if ($type eq "HMCCU_HM");
    #CHANGED: device oder 1 geht nicht
    $cmd .= "set $device config" if ($type eq "HMCCU_IP");
    my $k=0;
    my $dayCnt = scalar(@dayToTransfer);
    my $prefix = weekprofile_get_prefix_HM($device,"ENDTIME_SUNDAY_1",$me);

    #CHANGED: Präfix ist R-P1_ aber das R- darf nicht mitgeschickt werden
    if ($type eq "HMCCU_IP") {
      $prefix =~ s/R-//;
    }
    else {
      $prefix = ""; # always no prefix by set #msg1113658
    }

    if (!defined($prefix)) {
...

Es waren 2 Probleme:
Einmal hinter dem config ging weder device noch 1. Weglassen hat funktioniert.
Und die Readings haben alle den Präfix R-P1_ aber beim Senden darf man nur P1_ verwenden.

Kannst Du das bitte prüfen?

Danke & Grüße,
Roger

Bei mir war das ähnlich, allerdings haben die Readings bei mir den Präfix "R-1.P1_" und ich brauche die 1... bei mir also nur folgende Ergänzung:

my $prefix = weekprofile_get_prefix_HM($device,"ENDTIME_SUNDAY_1",$me);
        #CHANGED: Präfix ist R-P1_ aber das R- darf nicht mitgeschickt werden
    if ($type eq "HMCCU_IP") {
      $prefix =~ s/R-1\.//;
    }
    else {
      $prefix = ""; # always no prefix by set #msg1113658
    }


Was steht bei dir in "ccureadingfilter"?
 

Hi KernSani,

das mit der 1 beim config ist jetzt natürlich unschön.
Ich nutze die HmIP-eTRV-B-2 R4M Thermostate und die haben die Firmware 1.2.26 - auf der CCU3 Version 3.67.10

Ich habe auch noch eine 2. Installation in einem anderen Haushalt mit HM-CC-RT-DN Thermostaten mit Firmware 1.5 - auf einer CCU2 Version 2.61.7

Vielleicht bekommen wir ja die Unterschiede raus?

Grüße, Roger

rogerknop

Zitat von: KernSani am 30 November 2023, 23:18:00
Zitat von: rogerknop am 15 Oktober 2023, 19:33:48Hallo Risiko!
Ich hatte in #695 schon einmal Code Vorschläge für HMCCU Thermostate geschickt, die auch eingebaut wurden.
Nun habe ich einen HM IP Thermostat und da haben die Weekprofiles leider nicht mehr funktioniert.
Nach einigen Analysen habe ich es nun hinbekommen, dass es auch mit dem HM IP funktioniert und wollte die Änderungen hier teilen. Es wäre schön, wenn Du prüfen könntest, ob sie evtl. in deine Lösung wandern könnten.

Hier die Anpassungen in der Funktion weekprofile_sendDevProfile (ca. Zeile 492):
  } elsif ($type =~ /HMCCU.*/){
    $cmd .= "set $device config device" if ($type eq "HMCCU_HM");
    #CHANGED: device oder 1 geht nicht
    $cmd .= "set $device config" if ($type eq "HMCCU_IP");
    my $k=0;
    my $dayCnt = scalar(@dayToTransfer);
    my $prefix = weekprofile_get_prefix_HM($device,"ENDTIME_SUNDAY_1",$me);

    #CHANGED: Präfix ist R-P1_ aber das R- darf nicht mitgeschickt werden
    if ($type eq "HMCCU_IP") {
      $prefix =~ s/R-//;
    }
    else {
      $prefix = ""; # always no prefix by set #msg1113658
    }

    if (!defined($prefix)) {
...

Es waren 2 Probleme:
Einmal hinter dem config ging weder device noch 1. Weglassen hat funktioniert.
Und die Readings haben alle den Präfix R-P1_ aber beim Senden darf man nur P1_ verwenden.

Kannst Du das bitte prüfen?

Danke & Grüße,
Roger

Bei mir war das ähnlich, allerdings haben die Readings bei mir den Präfix "R-1.P1_" und ich brauche die 1... bei mir also nur folgende Ergänzung:

my $prefix = weekprofile_get_prefix_HM($device,"ENDTIME_SUNDAY_1",$me);
        #CHANGED: Präfix ist R-P1_ aber das R- darf nicht mitgeschickt werden
    if ($type eq "HMCCU_IP") {
      $prefix =~ s/R-1\.//;
    }
    else {
      $prefix = ""; # always no prefix by set #msg1113658
    }


Was steht bei dir in "ccureadingfilter"?
 

Sorry... diese Frage hatte ich völlig übersehen.
ccuflags: showMasterReadings,showLinkReadings,showDeviceReadings

rogerknop

#724
Hallo!
Jetzt ist bei mir noch ein anderes Problem dazugekommen.
Wenn ich über weekprofile ein neues Profil an HMCCU_HM oder HMCCU_IP Devices sende, dann werden die Readings nicht geändert!
Ich muss manuell ein get config ausführen.
Wenn ich von Auto zu Manuell oder Temperaturen ändere, dann ändern sich die Reading direkt (ausser Wochenprofil Readings)
Grüße, Roger

PS: Habe gerade nochmal in beiden Installationen ein Update durchgeführt und neu getestet.
Das config 1 bei IP geht nicht! Invalid parameter.

kadettilac89

Zitat von: myhome am 27 Oktober 2023, 15:54:13Nach dem ich dann das weekprofile aufrufe passiert das Folgende: siehe weekprofile.png Bild
Was auffällt ist das die Stundenangabe zu Minuten werden und natürlich kann ich auch kein Profil schreiben.
Im Device siehe "list" Code werden die Stunden und Temperaturangaben aber richtig angezeigt.

Vielleicht hilft das bei der Fehlersuche.


Zitat von: mephisto20 am 23 Januar 2022, 18:44:26Allerdings sieht da in Weekprofile ausgelesene Profil doch deutlich anders aus, als es sollte.
Die 3 unterschiedlichen Intervalle werden korrekt erkannt, allerdings werden die Zeiten scheinbar falsch umgerechnet.
Anbei mal die Screenshots.

HM-IP nutze ich nicht. Bei HM über CCU3 ist die Korrektur in Zeile 306. Zeile auskommentieren da hier keine Umrechnung der Zeit nötig ist. Es liegt bereits in Format <Stunde>:<Minute> vor. Könnt ihr mal testen, ich werde es erstmal nicht weiter nutzen, bin nur eben drüber gestolpert. Neustart nachdem die Datei geändert wurde.

        return (\@times, \@temps);
      }
      else{
        Log3($me, 5, "$me(readDayProfile): $reading"."_$i $prfTime $prfTemp");
      }
     
#      $prfTime = weekprofile_minutesToTime($prfTime);  <<<<<<<<<<--------- Raute (#) vor die Zeile

      if ($lastTime ne "24:00"){
        $lastTime = $prfTime;

        push(@temps, $prfTemp);
        push(@times, $prfTime);

StephanFHEM

Zitat von: kadettilac89 am 29 April 2024, 22:21:14HM-IP nutze ich nicht. Bei HM über CCU3 ist die Korrektur in Zeile 306. Zeile auskommentieren da hier keine Umrechnung der Zeit nötig ist. Es liegt bereits in Format <Stunde>:<Minute> vor. Könnt ihr mal testen, ich werde es erstmal nicht weiter nutzen, bin nur eben drüber gestolpert. Neustart nachdem die Datei geändert wurde.

Top Danke! Das hat bei mir so funktioniert, dass die Daten jetzt wenigstens sauber eingelesen werden können. Vom Export geht allerdings noch nichts. Bei HMIP kommt die Nachricht "HMCCUCHN: Wandthermostat_Wohnzimmer Invalid parameter specified" ... bei HM-Geräten kommt einfach keine Nachricht aber es wird auch nichts übertragen....

Nutze übrigens eine CCU3 mit HM und HMIP

kadettilac89

Zitat von: StephanFHEM am 15 Mai 2024, 18:24:23Top Danke! Das hat bei mir so funktioniert, dass die Daten jetzt wenigstens sauber eingelesen werden können. Vom Export geht allerdings noch nichts. Bei HMIP kommt die Nachricht "HMCCUCHN: Wandthermostat_Wohnzimmer Invalid parameter specified" ... bei HM-Geräten kommt einfach keine Nachricht aber es wird auch nichts übertragen....

Es gibt keinen Export-Befehl. Was genau führst du aus?

hapege

Hallo,

ich habe eine (möglicherweise triviale, sorry) Verständnisfrage:
Ich möchte ein notify auf "send_to_device" haben, um festzustellen welches Profil übertragen wurde.
Wenn ich ein Profil mit send_to_device an ein Device übertrage, also via
set AZ_Heizprog send_to_device AZHZ_normal AZ_Heizung
dann wird, wenn sich im Profil nichts vom aktuell aktiven Profil unterscheidet, ein Event generiert:
weekprofile AZ_Heizprog send_to_device AZHZ_normal AZ_HeizungIch kann also auf send_to_device triggern und sehe den Profilnamen "AZHZ_normal".

Wenn ich jedoch ein geändertes Profil per send_to_device übertrage, sprich sich im Profil etwas unterscheidet, dann gibt es kein "send_to_device" Event, zumindest sehe ich keins im EventMonitor, dafür ein "PROFILE_TRANSFERED" Event (leider ohne die gewünschte Info über den Namen des Profils) :
weekprofile AZ_Heizprog PROFILE_TRANSFERED AZ_Heizung
Warum ist das so, bzw ist das beabsichtigt?
Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

kadettilac89

Zitat von: hapege am 12 Januar 2025, 20:40:34Warum ist das so, bzw ist das beabsichtigt?


Vermutlich weil es bis jetzt keiner benötigt hat. Das beschriebene Event wird nach Doku erzeugt. Könnte detailierter sein, aber ist nun mal so.
Events:
Aktuell werden folgende Events erzeugt:
PROFILE_TRANSFERED: wenn ein Profil oder Teile davon zu einem Gerät gesended wurden
PROFILES_SAVED: wenn Profile in die Konfigurationsdatei gespeichert wurden (auch wenn es keine Änderung gab!)

Risiko, der Autor hat sich weitgehend zurück gezogen. Ich bezweifle dass es hier zeitnah noch eine Änderung gibt. Du bist lt. Signatur Dev, bleibt dir vermutlich nichts anderes übrig als das Modul deinen Wünschen nach zu  modifizieren.

Risiko

Hi.

kadettilac89 hat recht, leider habe ich nicht mehr so die Zeit und bin auch ziemlich aus dem Code raus.

Wenn ich es auf die Schnelle aber richtig sehe, kannst du in den Zeilen 548 und 555 hinter $device noch $prf->{TOPIC}:$prf->{NAME} angeben. Dann sollte der Name des Profils mit im Event auftauchen.

$cmd=$cmd.";trigger $me PROFILE_TRANSFERED $device $prf->{TOPIC}:$prf->{NAME}";bzw.
DoTrigger($me,"PROFILE_TRANSFERED $device $prf->{TOPIC}:$prf->{NAME}",1);
Habe leider keine Zeit es zu testen. Kannst es ja gerne übernehmen.