FHEM Forum

FHEM => Automatisierung => Thema gestartet von: dansch am 27 Dezember 2013, 14:23:40

Titel: Structure Status und dblog
Beitrag von: dansch am 27 Dezember 2013, 14:23:40
Hallo zusammen und Frohes Fest nachträglich an alle,

ich bin gerade dabei mir mein eigenes Frontend zu schreiben und bin dabei auf ein Problem mit Structures in Verbindung mit dem dblog in eine MySQL Datenbank gestossen, ich hoffe ihr könnt mir helfen.

Folgende ist Situation:

3 Lichtschalter wurden in eine Structure zusammengefasst:

define All_Lights structure room L_WZ_1 L_AZ_1 L_WZ_3
attr All_Lights setList on off
attr All_Lights clientstate_behavior relative
attr All_Lights clientstate_priority on off



In der Datenbank habe ich für die Structure in der Tabelle Current folgende Einträge:

2013-12-27 00:01:07   All_Lights   STRUCTURE   off   off
2013-12-27 00:00:58   All_Lights   STRUCTURE   on   on
2013-12-26 16:23:45   All_Lights   STRUCTURE   undefined   

Bei einer Statusänderung wird hier nur das Datum aktualisiert für den entsprechenden Status (on, off, undefined).

Problem:

Der Status in der Datenbank für die Structure wird nur dann aktualisiert wenn ich eines der Lichter schalte (also nicht über die Structure selbst). Sobald ich über die Structure alle Lichter gesammelt ein/ausschalte will wird der Status der Structure nicht in der Datenbank aktualisiert.


Könnt ihr mir dabei auf die Sprünge helfen woran das Verhalten liegt ? Ich würde gerne über die Structure alle Lichter gesammelt schalten können während auch der Status der Structure in der Datenbank entsprechend aktualisiert wird.

Danke!
Titel: Antw:Structure Status und dblog
Beitrag von: rudolfkoenig am 27 Dezember 2013, 15:03:20
Die Ursache ist vermutlich, dass structure beim Befehl ausfuehren kein event fuer sich selbst generiert.
Titel: Antw:Structure Status und dblog
Beitrag von: dansch am 27 Dezember 2013, 15:07:57
Gibt es eine alternative Möglichkeit um ans Ziel zu kommen ?
Mein Backend fragt via einem Websocket zur Laufzeit ständig die Datenbank auf Änderungen ab und pusht diese dann an die Frontend(s).

Die Funktionalität wäre für mich ziemlich wichtig :(
Titel: Antw:Structure Status und dblog
Beitrag von: dansch am 27 Dezember 2013, 16:55:22
Also einen Workaround habe ich mich gerade selbst geschaffen - dieser ist aber eigentlich absolut dämlich:

Ich habe eine weitere Structure definiert, die genau so definiert ist wie die Basisstructure. Diese Structure habe ich _Btn genannt.
Schalte ich über die _Btn Structure die Lampen, bekommt die Basisstructure den Zustand mit und aktualisiert sich in der Datenbank.

Klappt, aber ist doof.

Gibt es eine Möglichkeit, das der Structure generell beigebracht wird auch für sich selbst Events auszulösen ?
Ich habe mir die structure.pm einmal im Repository angesehen, leider bin ich kein Perl Entwickler so dass mir auf Anhieb nicht klar wurde was da genau gemacht wird. Ich müsste mich zunächst in den Syntax einarbeiten um zu verstehen was ihr dort treibt.
Titel: Antw:Structure Status und dblog
Beitrag von: justme1968 am 27 Dezember 2013, 17:30:35
ich kann das problem  nicht ganz nachvollziehen.

wenn ich eine structure schalte oder eine device aus einer structure ändert sich state der structure, das icon wird aktualisiert und mit inform timer sehe ich das event (sogar so oft wie die structure teilnehmer hat bzw. ein mal mehr)

kann es sein das die structure in der regex für dein dblog einfach nicht mit dabei ist?

gruss
  andre
Titel: Antw:Structure Status und dblog
Beitrag von: dansch am 27 Dezember 2013, 18:01:30
Ich logge eigentlich alles in der db mit:

define myDBLog DbLog /etc/fhem/mysql.config .*:.*

Es scheint tatsächlich so zu sein, das von der Structure kein Event für die Structure selbst ausgeht, d.h. die Structure schert sich nicht über ihren Status wenn sie selbst zum schalten verwendet wird.

D.h. ich schalte die Structure auf "an", alle Lichter gehen "an". Aber der Status für die Structure in der DB wird NICHT gesetzt, weder für "on", "off", "undefined".
Im Gegensatz dazu, wenn ich eines der Lichter auf "an" schalte, setzt sich der Status für das Licht in der Datenbank auf "on" und auch das der Structure ist auf "on".

Probiert das mal bei euch aus mit Dummies. Ist bei mir auch über das Standard Frontend so nachvollziehbar.

Hier mal meine einfache Testkonfiguration mit Dummies:

define L_AZ_1 dummy
attr L_AZ_1 setList on off

define L_WZ_1 dummy
attr L_WZ_1 setList on off

define L_WZ_3 dummy
attr L_WZ_3 setList on off

define All_Lights structure room L_WZ_1 L_AZ_1 L_WZ_3
attr All_Lights setList on off
attr All_Lights clientstate_behavior relative
attr All_Lights clientstate_priority on off


Die Lichter gehen bei mir im Frontend auch an, auch für die Structure. Nur in der Datenbank landet der Status nicht :(

Mal anders gefragt: Bekomme ich den Status der Structure irgendwie anders raus ?
Titel: Antw:Structure Status und dblog
Beitrag von: justme1968 am 27 Dezember 2013, 18:28:43
mit deinem Beispiel sehe ich die events bei inform timer und sie landen auch in der db...

Zitatinform timer .*:.*
set All_Lights off
2013-12-27 18:26:57 dummy L_AZ_1 off
2013-12-27 18:26:57 dummy L_WZ_1 off
2013-12-27 18:26:57 dummy L_WZ_3 off
2013-12-27 18:26:57 structure All_Lights off

Zitat2013-12-27 18:26:57|L_AZ_1|DUMMY|off|state|off|
2013-12-27 18:26:57|L_WZ_1|DUMMY|off|state|off|
2013-12-27 18:26:57|L_WZ_3|DUMMY|off|state|off|
2013-12-27 18:26:57|All_Lights|STRUCTURE|off|state|off|

gruss
  andre

ps: eine structure hat kein setList attribut.
Titel: Antw:Structure Status und dblog
Beitrag von: dansch am 27 Dezember 2013, 18:43:21
Bei mir leider nicht:

Events:
2013-12-27 18:37:17 dummy L_AZ_1 on
2013-12-27 18:37:17 dummy L_WZ_1 on
2013-12-27 18:37:17 dummy L_WZ_3 on
2013-12-27 18:37:25 dummy L_AZ_1 off
2013-12-27 18:37:25 dummy L_WZ_1 off
2013-12-27 18:37:25 dummy L_WZ_3 off


Die Structure kommt erst wenn ich die Lichter selbst schalte:
2013-12-27 18:46:19 structure All_Lights_EG on
2013-12-27 18:46:19 dummy L_WZ_1 on
2013-12-27 18:46:22 structure All_Lights_EG off
2013-12-27 18:46:22 dummy L_WZ_1 off



Woran könnte das liegen ? Ich fahre eine Minimalkonfiguration, nur die 3 Dummies und die Structure. Und das logging in die MySQL Datenbank:

fhem.cfg:
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global sendStatistics manually
attr global statefile ./log/fhem.save
attr global verbose 3

define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global

define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

define autocreate autocreate
attr autocreate autosave 1
attr autocreate device_room %TYPE
attr autocreate filelog ./log/%NAME-%Y.log
attr autocreate weblink 1
attr autocreate weblink_room Plots

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create

include /etc/fhem/mysql.include
include /etc/fhem/test.include

attr global sendStatistics never

# If the above notify did not helped, then you probably have to enable some of
# the following lines.  Verify first that /dev/xxx ist correct.

#define FHZ FHZ /dev/USB0
#define CUL CUL /dev/ttyACM0@9600 1234
#attr CUL rfmode HomeMatic

#define EUL TCM 310 /dev/ttyACM0@57600
#define BscBor TCM 120 /dev/ttyUSB0@9600
#define BscSmartConnect TCM 310 /dev/ttyUSB0@57600


mysql.include:
define myDBLog DbLog /etc/fhem/mysql.config .*:.*

test.include:
define L_AZ_1 dummy
attr L_AZ_1 setList on off

define L_WZ_1 dummy
attr L_WZ_1 setList on off

define L_WZ_3 dummy
attr L_WZ_3 setList on off

define All_Lights_EG structure room L_WZ_1 L_AZ_1 L_WZ_3
attr All_Lights_EG clientstate_behavior relative
attr All_Lights_EG clientstate_priority on off


Version 5.4 ist installiert.
Titel: Antw:Structure Status und dblog
Beitrag von: justme1968 am 27 Dezember 2013, 18:44:45
ist deine fhem installation auf dem aktuellen stand? als mit update aktualisiert?

gruss
  andre
Titel: Antw:Structure Status und dblog
Beitrag von: dansch am 27 Dezember 2013, 18:48:07
Ich update mal gerade auf 5.5
Titel: Antw:Structure Status und dblog
Beitrag von: dansch am 27 Dezember 2013, 18:51:07
Ohmann,

das wars! Hätte ich jetzt nicht vermutet das es daran lag. Ich hatte 5.4 vorher drauf.

Danke Andre!
Titel: Antw:Structure Status und dblog
Beitrag von: Tobias am 03 Januar 2014, 17:16:20
Zitat von: dansch am 27 Dezember 2013, 18:51:07das wars! Hätte ich jetzt nicht vermutet das es daran lag. Ich hatte 5.4 vorher drauf.
Diese Änderung hatte ich vor ca 3Monaten im DbLog Modul eingecheckt ;)