FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: andies am 16 Dezember 2018, 18:17:09

Titel: welches Gerät löst modify aus?
Beitrag von: andies am 16 Dezember 2018, 18:17:09
Ich habe eine Kalenderanzeige aus HTTPMOD. Jede Änderung des Kalenders führt zu einem modify
modify JohannPlan UntisCalview:,,...
  modify JohannPlan UntisCalview:,,...
  modify JohannPlan UntisCalview:,,...
  modify JohannPlan UntisCalview:,,...

und ich muss dann immer Save-Config drücken, was ich gern vermeiden möchte (alles automatisch sichern will ich auch nicht). Weiß jemand, wie ich das abstellen kann?

Zu den Geräten. Ich habe ein UntisCalview

Internals:
   DEF        UntisCal next
   INTERVAL   43200
   KALENDER   UntisCal
   NAME       UntisCalview
   NR         204
   NTFY_ORDER 50-UntisCalview
   STATE      t: 38 td: 0 tm: 8
   TYPE       CALVIEW
   READINGS:
     2018-12-16 17:14:57   c-term          38
...zig weitere Einträge...
Attributes:
   event-on-change-reading .*
   group      intern
   modes      next
   userReadings gesamt

und das Auslesen erfolgt durch
Internals:
   DEF        ical file ./log/HCG.ics
   NAME       UntisCal
   NOTIFYDEV  global
   NR         203
   NTFY_ORDER 50-UntisCal
   STATE      triggered
   TYPE       Calendar
   READINGS:
     2018-12-16 17:14:56   lastUpdate      2018-12-16 17:14:56
     2018-11-20 14:07:04   modeAlarm       
     2018-12-14 14:40:00   modeAlarmOrStart
     2018-11-20 14:07:04   modeAlarmed     
     2018-12-14 15:14:56   modeChanged     
     2018-12-15 22:14:56   modeEnd         
     2018-12-14 15:14:56   modeEnded       
     2018-12-14 14:40:00   modeStart       
     2018-12-14 14:14:56   modeStarted     
     2018-12-16 17:14:56   modeUpcoming    84130214435;89574214605;86521514715;83669414407;86521614715;89232715118;86042614657;83669714407;85900814635;85527314605;86042314657;83669614407;84614814484;86340414697;89232515118;89595514635;89232615118;84130414435;86042514657;86042214657;90135715282;86042414657;84614714484;85527514605;85402814585;84130614435;86042714657;83669314407;84130314435;85402914585;86340614697;86521414715;89599014657;85527414605;83669514407;84130514435;85527614605;86340514697
     2018-12-16 17:14:56   nextUpdate      2018-12-16 18:14:56
     2018-12-16 17:15:37   nextWakeup      2018-12-16 18:14:56
     2018-12-16 17:14:56   state           triggered
Attributes:
   group      intern

wobei die Datei geschrieben wird von
Internals:
   DEF        UntisCalview:.* {Plananzeige()}
   NAME       Plan
   NOTIFYDEV  UntisCalview
   NR         206
   NTFY_ORDER 50-Plan
   REGEXP     UntisCalview:.*
   STATE      2018-12-16 17:14:57
   TRIGGERTIME 1544976897.32742
   TYPE       notify
   READINGS:
     2018-12-02 21:14:46   state           active
Attributes:
   group      intern

sowie dem Kommando

sub Plananzeige() {
my $cal = "UntisCalview"; #### Name des Calview-Device
my @daten; ### Hash, speichert Eintraege aus Calview (aber dort nur Index, nicht ganzen Inhalt)
my $anzahl = (ReadingsVal($cal,"c-term",0)); ### Anzahl der Eintraege
my $timeshort = ""; ### Zeiten von '08:00 - 08:45' bis '13:55 - 14:40'
my $btime = ""; ### Startzeit
my $weekday = ""; ### 1 (Montag) bis 5 (Freitag)
my $j = ""; ### Laufindizes
my $jlang = "";
my $zeile = ""; ### Laufindex

### Schleife ueber alle Termine, um sie angerdnet in den zweidimensionalen hash zu schreiben
for ($j =1; $j <=$anzahl; $j++)
### 3stellige Formatierung für t_ ###
{
if
($j <=9)
{$jlang = "00".$j}
else
{$jlang = "0".$j};

$weekday = ReadingsVal($cal,"t_".$jlang."_weekday",0);
$btime = ReadingsVal($cal,"t_".$jlang."_btime",0);


### Zuordnung der Anzeigezeilen ###
### Beispiel Dienstag = Spalte 2 / 13:05 = Zeile 6
if ($btime eq "08:00")
{
$zeile = 1;
}
elsif ($btime eq "08:50")
{
$zeile = 2;
}
elsif ($btime eq "09:40")
{
$zeile = 3;
}
elsif ($btime eq "10:40")
{
$zeile = 4;
}
elsif ($btime eq "12:15")
{
$zeile = 5;
}
elsif ($btime eq "13:05")
{
$zeile = 6;
}
elsif ($btime eq "13:55")
{
$zeile = 7;
}
else
{
$zeile = 0;
}
$daten[$weekday][$zeile]= $jlang;
};

### Zeilen aufbauen, beginnen mit Ueberschrift
my $zeilen = $cal.":<Zeit>,<Montag>,<Dienstag>,<Mittwoch>,<Donnerstag>,<Freitag>";
$zeilen = $zeilen.Einzelzeileholen(\@daten, $cal, ":\<8:00-8:45\>", 1);
$zeilen = $zeilen.Einzelzeileholen(\@daten, $cal, ":\<8:50-9:35\>", 2);
$zeilen = $zeilen.Einzelzeileholen(\@daten, $cal, ":\<9:40-10:25\>", 3);
$zeilen = $zeilen.Einzelzeileholen(\@daten, $cal, ":\<10:40-11:25\>", 4);
$zeilen = $zeilen.Einzelzeileholen(\@daten, $cal, ":\<12:15-13:00\>", 5);
$zeilen = $zeilen.Einzelzeileholen(\@daten, $cal, ":\<13:05-13:50\>", 6);
$zeilen = $zeilen.Einzelzeileholen(\@daten, $cal, ":\<13:55-14:40\>", 7);

### Definieren der ReadingsGroup ########
#Log 1, $zeilen;
fhem( "defmod JohannPlan readingsGroup ".$zeilen);
fhem( "save");
}

Wer löst denn eigentlich das modify aus?!
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: Amenophis86 am 16 Dezember 2018, 18:41:28
attr global stacktrace 1 sollte helfen ;)
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: andies am 16 Dezember 2018, 20:56:05
Hat nix gebracht - ich habe da keine Warnings.
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: MadMax-FHEM am 16 Dezember 2018, 21:14:23
ZitatWer löst denn eigentlich das modify aus?!

Vielleicht du selbst bzw. das defmod am Ende der Sub...

Also die Zeile:


fhem( "defmod JohannPlan readingsGroup ".$zeilen);


Gruß, Joachim
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: amenomade am 16 Dezember 2018, 21:48:36
Das modify in der Log kommt sicher von der Funktion, aber danach gibt es ein fhem("save"). Das sollte nicht dazu führen, dass er "dann immer Save-Config drücken muss"

Ich vermute, beide Sachen haben miteinander nichts zu tun:  etwas anderes, dass die Config ändert?
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: andies am 16 Dezember 2018, 21:50:11
ich fange jetzt mal an die Funktionenaufrufe mit Fehlern zu versehen - um dann zu schaue , ob sich das Problem so einkreisen lässt.
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: andies am 17 Dezember 2018, 19:58:57
es ist in der Tat diese Stelle hier:

fhem( "defmod JohannPlan readingsGroup ".$zeilen);
fhem("save");

Der erste Befehl wird ausgeführt, der zweite nicht. Ich stehe auf dem Schlauch.


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: MadMax-FHEM am 17 Dezember 2018, 20:04:35
Da fehlt vermutlich das Attribut autoSave (oder so)...

Wenn das nicht gesetzt ist, geht glaube ich der save-Befehl nicht von Programmen/Modulen aus sondern nur über die Oberfläche...

Wobei ich so automatische save nicht naja finde ;)

Gruß, Joachim
Titel: Antw:welches Gerät löst modify aus?
Beitrag von: CoolTux am 17 Dezember 2018, 20:28:06
Attribut autosave im Global Device.

Mit allen Risiken!!!