Autor Thema: Neues Modul YAAHM - Yet Another Auto Home Module  (Gelesen 37392 mal)

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 986
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #135 am: 12 Dezember 2017, 12:03:04 »
Hier mal ein List von meinem Zeitprofile:

Internals:
   CFGFN     
   NAME       Zeitprofile
   NOTIFYDEV  global,Zeitprofile
   NR         745
   STATE      Initialized
   TYPE       YAAHM
   VERSION    1.32
   DATA:
     DD:
       HASH(0xbd4bd478)
       HASH(0xbd896928)
     DT:
       aftermidnight:
         00:01
         00:01
         undef
         ;
       afternoon:
         14:00
         undef
         undef
         ;
       aftersunrise:
         undef
         00:30
         setreading AU.ho.MS.Multisensor brightness 100, set Dunkel off
         ;
       aftersunset:
         undef
         01:00
         undef
         ;
       beforemidnight:
         undef
         00:05
         undef
         ;
       beforesunrise:
         undef
         01:00
         undef
         ;
       beforesunset:
         undef
         00:30
         setreading AU.ho.MS.Multisensor brightness 0, set Dunkel on
         ;
       evening:
         18:30
         undef
         undef
         ;
       morning:
         05:30
         undef
         set ......WB..* on
         ;
       night:
         22:00
         undef
         set ......WB..* off
         ;
       noon:
         13:00
         undef
         undef
         ;
       sleep:
         22:30
         undef
         undef
         undef
       sunrise:
         undef
         undef
         set ......WB..* off
         ;
       sunset:
         undef
         undef
         set ......WB..* on
         ;
       wakeup:
         06:15
         undef
         undef
         undef
     HSM:
     WT:
       HASH(0xbd7c17e8)
       HASH(0xbd7c5930)
   READINGS:
     2017-12-12 12:02:11   housephase      daytime
     2017-12-12 08:58:00   housetime       aftersunrise
     2017-11-26 08:07:15   lockstate       0
     2017-12-12 12:00:48   next_0         
     2017-12-12 12:00:49   next_1         
     2017-12-12 08:58:00   next_housetime  aftersunrise
     2017-12-12 08:58:00   prev_housetime 
     2017-12-12 12:00:48   ring_0          06:15
     2017-12-12 12:00:48   ring_0_1        06:15
     2017-12-12 12:00:49   ring_1          22:30
     2017-12-12 12:00:49   ring_1_1        22:30
     2017-12-08 07:07:58   ring_2          06:15
     2017-12-08 07:07:58   ring_2_1        off
     2017-12-12 12:00:48   s_aftermidnight 00:01
     2017-12-12 12:00:48   s_afternoon     14:00
     2017-12-12 12:00:48   s_aftersunrise  08:28
     2017-12-12 12:00:48   s_aftersunset   16:55
     2017-12-12 12:00:48   s_beforemidnight 23:55
     2017-12-12 12:00:48   s_beforesunrise 06:58
     2017-12-12 12:00:48   s_beforesunset  15:25
     2017-12-12 12:00:48   s_evening       18:30
     2017-12-12 12:00:48   s_morning       05:30
     2017-12-12 12:00:48   s_night         22:00
     2017-12-12 12:00:48   s_noon          13:00
     2017-12-12 12:00:48   s_sleep         22:30
     2017-12-12 12:00:48   s_sunrise       07:58
     2017-12-12 12:00:48   s_sunset        15:55
     2017-12-12 12:00:48   s_wakeup        06:15
     2017-12-12 12:02:13   savedate        Tue Dec 12 12:02:13 2017
     2017-12-12 09:18:13   state           Initialized
     2017-11-26 08:04:45   todayDesc       --
     2017-12-11 00:00:33   todayType       workday
     2017-12-12 12:00:48   today_0         06:15
     2017-12-12 12:00:48   today_0_e       enabled
     2017-12-12 12:00:49   today_1         22:30
     2017-12-12 12:00:49   today_1_e       enabled
     2017-12-08 07:07:58   today_2         06:15
     2017-12-08 07:07:58   today_2_e       enabled
     2017-11-26 08:04:45   tomorrowDesc    --
     2017-12-10 00:00:33   tomorrowType    workday
     2017-12-12 12:00:48   tomorrow_0      06:15
     2017-12-12 12:00:48   tomorrow_0_e    enabled
     2017-12-12 12:00:49   tomorrow_1      22:30
     2017-12-12 12:00:49   tomorrow_1_e    enabled
     2017-12-08 07:07:58   tomorrow_2      off
     2017-12-08 07:07:58   tomorrow_2_e    enabled
     2017-12-12 12:02:11   tr_housephase   Tageszeit
     2017-12-12 08:58:00   tr_housetime    Nach Sonnenaufgang
     2017-12-11 00:00:33   tr_todayType    Arbeitstag
     2017-12-10 00:00:33   tr_tomorrowType Arbeitstag
     2017-12-12 12:00:49   tr_wake_0       6:15 morgen
     2017-12-12 12:00:49   tr_wake_1       22:30 heute
     2017-12-08 07:07:58   tr_wake_2       off morgen
   TIMER:
     Zeitprofile_aftermidnight:
       HASH       Zeitprofile
       MODIFIER   aftermidnight
       NAME       Zeitprofile_aftermidnight
     Zeitprofile_check:
       HASH       Zeitprofile
       MODIFIER   check
       NAME       Zeitprofile_check
     Zeitprofile_daytime:
       HASH       Zeitprofile
       MODIFIER   daytime
       NAME       Zeitprofile_daytime
     Zeitprofile_nighttime:
       HASH       Zeitprofile
       MODIFIER   nighttime
       NAME       Zeitprofile_nighttime
Attributes:
   room       ProfileRoom

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7208
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #136 am: 12 Dezember 2017, 13:59:39 »
Wer hat denn danach gefragt  ::) ?


Was ist der Wert des Readings savedate ?
Bitte mal die Routine YAAHM_save ersetzen durch
#########################################################################################
#
# YAAHM_save
#
# Parameter hash = hash of the YAAHM device
#
#########################################################################################

sub YAAHM_save($) {
  my ($hash) = @_;
  $hash->{DATA}{"savedate"} = localtime(time);
  readingsSingleUpdate( $hash, "savedate", $hash->{DATA}{"savedate"}, 1 );
  my $json   = JSON->new->utf8;
  my $jhash0 = eval{ $json->encode( $hash->{DATA} ) };
  Log 1, "===========> JSON data is ".Dumper($jhash0);
  my $error  = FileWrite("YAAHMFILE",$jhash0);
  Log 1,"[YAAHM_save] error=$error";
  return;
}

und den Log-Output posten.

LG

pah

Offline UweH

  • Hero Member
  • *****
  • Beiträge: 1672
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #137 am: 12 Dezember 2017, 18:16:05 »

Bei mir funktioniert es jetzt übrigens mit der Version 1.32. Auch nach einem restart ist alles wieder da.  :)


Gruß
Uwe

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7208
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #138 am: 12 Dezember 2017, 21:05:40 »
Der Unterschied zwischen 1.31 und 1.32 hat aber damit gar nichts zu tun...

LG

pah

Offline UweH

  • Hero Member
  • *****
  • Beiträge: 1672
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #139 am: 12 Dezember 2017, 22:01:19 »

Die Antwort habe ich bereits befürchtet, als ich es geschrieben habe. War schon in der Schule so...  :(

Es ist aber nun so, dass es bei mir auf einer FHEM-Installation (raspbian) seit dem Update funktioniert (warum nun auch immer), auf einer anderen Installation (Ubuntu) nicht. Da wird nach dem Befehl
Zitat
{(FileRead("YAAHMFILE"))[1]}
lediglich die aktuelle Seite refresht. Das war's. Die Geschichte mit dem Testfile funktioniert aber.

Gruß
Uwe

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7208
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #140 am: 13 Dezember 2017, 03:15:26 »
Wie sagte Odoaker zu Wulfila im Film "Die letzte Legion":
Zitat
Falsche Antwort. Bring ihn weg und schneid ihm die Kehle durch.

Es ist nicht der Lesebefehl, der nicht funktioniert - sondern offenbar geht der Schreibbefehl in die Hose. Mit
configDB fileshow YAAHMFilekann man sich auch ohne "FileRead" die Datei anzeigen lassen. Mit
configDB infokann man sehen, wie groß die eigene configdb ist, und
configDBalleine zeigt noch ein paar weitere Möglichkeiten.

Ersetz doch bitte mal die Schreibroutine YAAHM_save durch die oben gepostete Version, und setz bei dem YAAHM-Device verbose auf 5. Ich tippe auf irgendein Problem mit der JSON-Erzeugung aus dem Datenhash.

LG

pah
« Letzte Änderung: 13 Dezember 2017, 08:30:57 von Prof. Dr. Peter Henning »

Offline UweH

  • Hero Member
  • *****
  • Beiträge: 1672
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #141 am: 13 Dezember 2017, 09:13:59 »
Moin,


Danke erst mal für die Tipps, komme leider erst morgen oder am Wochenende dazu.


Gruß
Uwe

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 986
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #142 am: 13 Dezember 2017, 09:59:33 »
Wer hat denn danach gefragt  ::) ?

Da die Frage im Forum des öfteren kommt, habe ich einfach mal im vorauseilendem Gehorsam gepostet...

und den Log-Output posten.

Hier der Output:

2017.12.13 09:56:57.306 1: [YAAHM_save] error=
2017.12.13 09:56:57.305 1: PERL WARNING: Use of uninitialized value $error in concatenation (.) or string at ./FHEM/95_YAAHM.pm line 957.

2017.12.13 09:56:57.290 1: ===========> JSON data is $VAR1 = undef;

Ronny

Offline UweH

  • Hero Member
  • *****
  • Beiträge: 1672
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #143 am: 13 Dezember 2017, 17:01:25 »
So, hab's doch heute noch geschafft. Bei mir sieht es aus ähnlich aus wie bei RoBra81:

save:
2017.12.13 16:13:24 1: ===========> JSON data is undef

2017.12.13 16:13:24 1: PERL WARNING: Use of uninitialized value $error in concatenation (.) or string at ./FHEM/95_YAAHM.pm line 957.
2017.12.13 16:13:24 1: [YAAHM_save] error=

restore:
2017.12.13 16:16:27 1: [YAAHM_restore] read error=Error on reading YAAHMFILE from database!
JSON ist die aktuelle Version.

Gruß
Uwe

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7208
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #144 am: 13 Dezember 2017, 19:18:58 »
Was steht denn beim Systemstart im Log ?
Zitat
YAAHM_Define] data hash restored from save file with date ...
oder
Zitat
[YAAHM_Define] data hash is initialized
?

LG

pah

Offline UweH

  • Hero Member
  • *****
  • Beiträge: 1672
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #145 am: 13 Dezember 2017, 21:29:24 »
Beim letzten restart habe ich folgenden Eintrag gefunden:

2017.12.10 12:21:55 1: [YAAHM_restore] read error=Error on reading YAAHMFILE from database!
2017.12.10 12:21:55 1: [YAAHM_Define] data hash is initialized

Gruß
Uwe

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7208
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #146 am: 14 Dezember 2017, 05:46:43 »
So sollte es ja auch sein. Es ist mir deshalb schleierhaft, wieso die JSON-Erzeugung aus dem Hash fehlschlägt. Bitte noch eine weitere Logzeile in die Save-Funktion einbauen, also insgesamt
sub YAAHM_save($) {
  my ($hash) = @_;
  $hash->{DATA}{"savedate"} = localtime(time);
  readingsSingleUpdate( $hash, "savedate", $hash->{DATA}{"savedate"}, 1 );
  my $json   = JSON->new->utf8;
  my $jhash0 = eval{ $json->encode( $hash->{DATA} ) };
  Log 1, "===========> hash data is ".Dumper($hash->{DATA});
  Log 1, "===========> JSON data is ".Dumper($jhash0);
  my $error  = FileWrite("YAAHMFILE",$jhash0);
  Log 1,"[YAAHM_save] error=$error";
  return;
}

LG

pah

Offline UweH

  • Hero Member
  • *****
  • Beiträge: 1672
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #147 am: 14 Dezember 2017, 18:22:52 »


Hallo pah,


damit wird dann diese Logausgabe generiert.


Gruß
Uwe


EDIT: Übrigens wird YAAHMFILE in der configdb angelegt...gelesen wird's aber wohl nicht.
« Letzte Änderung: 14 Dezember 2017, 18:32:08 von UweH »

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7208
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #148 am: 15 Dezember 2017, 06:47:42 »
Sieh mal einer an.

Denn in den Hash-Daten ist etwas auffällig: Der letzte Teil davon, da wird statt eines Datums ein Datumsobjekt eingetragen (Beginnt mit bless( ... und endet mit der Klassenbezeichnung Time::Piece). Die JSON-Erzeugung geht dann in die Hose.

Was liefert auf diesem System denn das Kommando "{localtime(time)}" ?

LG

pah

Offline RoBra81

  • Sr. Member
  • ****
  • Beiträge: 986
Antw:Neues Modul YAAHM - Yet Another Auto Home Module
« Antwort #149 am: 15 Dezember 2017, 09:34:44 »
Was liefert auf diesem System denn das Kommando "{localtime(time)}" ?

Fri Dec 15 09:34:10 2017

Ronny