Initiales lesen des Status beim ersten Start des fhem Servers

Begonnen von homa, 16 Oktober 2018, 00:12:18

Vorheriges Thema - Nächstes Thema

homa

Hallo,
ich komme noch von knxweb2 (hat mir jetzt lange Jahre treue Dienste geleistet) und habe heute meinen ersten FHEM Server aufgesetzt. Raspi 3, knxd, fhem. Soweit so gut. (Tip knxd in der aktuellen Version macht bei mir mit einer USB Schnittstelle von Merten probleme und ich bin auf v0.12 zurück. Klappt stabil!)
Habe meine ersten AN/AUS Schalter gebaut.

define SZ_Decke KNX 3/1/0:dpt1
attr SZ_Decke IODev KNX
attr SZ_Decke devStateIcon on::off off::on
attr SZ_Decke room Schlafzimmer
attr SZ_Decke webCmd on:off


Leider wird beim ersten Neustart keine Grafik bzw. ein falscher Status angezeigt. Wie kann ich FHEM dazu bringen den Status aus der Gruppe 3/1/0 zu lesen? Ja ich weiß das man eigentlich eine Rückmeldungs Gruppe hat. Aber hier sind die Meldungen in der gleichen Gruppe wie die Schaltmeldungen. Möchte ungern alles in der ETS umstricken.
Wie kann ich ein inital lesen veranlassen (wie in knxweb2) ?



JoeALLb

Servus. Wozu benötigst Du das?
FHEM speichert doch vor dem reboot den Status im Reading ab, er ist also nach dem Reboot wieder verfügbar.
Geht es dir darum, während dem Neustart einen veränderten Status abzurufen?

Mit einem eigenen Device, beispielsweise so ginge das:

define di.Autostart DOIF ([global:"INITIALIZED"])\
  ( get SZ_Decke g1 )
  ( get SZ2_Decke g1 )
attr di.Autostart initialize init
attr di.Autostart room System


Das  "get SZ_Decke g1" kannst Du natürlich beliebig verändern und um weitere Befehle erweitern,
um zB auch die Uhrzeit um Mitternacht zu senden, etc...

Zitat von: homa am 16 Oktober 2018, 00:12:18
(Tip knxd in der aktuellen Version macht bei mir mit einer USB Schnittstelle von Merten probleme und ich bin auf v0.12 zurück. Klappt stabil!)
Habe ich auch schon bemerkt! Vorallem im Zusammenhang mit dem Programmieren von Devices.


sG Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

homa

Hallo Joe,

danke für Deine Hilfe. Soweit klappt das. Wobei ich den Teil ([global:"INITIALIZED"]) noch nicht verstehe und er zeigt auch immer di.Autostart cmd_2 an ?! Und global no definition Global in der DeviceOverview ?!

Mein System hat ein paar hundert Zustände und nach einem Stromausfall oder Neustart der RasPi will man sich doch auf die Zustände verlassen können. Licht, Rollos, Fensterkontakte, schaltbare Steckdosen, Lüfter, Heizung, Thermostate und das mal x Räume ...
Zumal in KNX die Grundfunktionen Licht an/aus, Roll hoch/runter direkt in den Geräten passieren soll und nur der "Luxus" Zeitgesteuert, Komfortfunktionen und Visualisierung (klar dann auch mit Schalten an/aus etc.) im FHEM. Aber wenn der FHEM Server weg ist muss die Familie trotzdem leben können ;-)

Kann man die Zustände auch gewollt abfragen? Nicht nur beim Systemstart. Ich komm mit diesem künstlichen Device di.Autostart noch nicht so recht klar. Ein get di.Autostart klappt hier nicht.

Wie gesagt mein 2. Tag mit dem FHEM System. Dafür klappt meine Fritzbox. Hier habe ich einen Fehler im Wiki gefunden ...
https://wiki.fhem.de/wiki/Telefonat_als_Ausl%C3%B6ser_f%C3%BCr_Aktionen
Die Telefon Nummer muss in "", dann klappt das auch. Wer kann so etwas verbessern?


JoeALLb

Servus.

cmd_2 sagt aus, dass er nichts mehr tut.

Global ist das System, also FHEM, und das meldet eben nach dem BNeustart das Ereignis "INITIALIZED",
auf was wir hier reagieren.
Sieh Dir doch mal die Commandref zum Modul DOIF an, da gibt es jede menge an Beispielen.
https://fhem.de/commandref_DE.html#DOIF



Zitat von: homa am 16 Oktober 2018, 18:32:14
Kann man die Zustände auch gewollt abfragen? Nicht nur beim Systemstart.
Klar. Hängt vom verwendeten Modultyp ab. Hier, also bei DOIF wäre es:
set di.Autostart cmd_1,
um in den ersten IF-Block zu springen und diesen direkt auszuführen, ohne dass die IF-Prüfung ([global:"INITIALIZED"]) ausgeführt wird.

Du kannst das natürlich auch mit gewissen Zeitobjekten erweitern.
Beisliep

define di.Autostart DOIF ([global:"INITIALIZED"] or [08:00])\
  ( get SZ_Decke g1 ) \
DOELSEIF ([20:00]) \
  (   set SZ_Decke g1 off)
attr di.Autostart initialize init
attr di.Autostart room System




Zitat von: homa am 16 Oktober 2018, 18:32:14
Wer kann so etwas verbessern?
Habs korrigiert. Am Besten holst Du dir auch einen Wiki-Account.

sG Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

homa

#4
wow! Danke für Deine fundierten Antworten. So langsam kommt es.

Kannst Du mir einen Tip zu Dimmer Steuerung und KNX geben? Alle Bsp. die ich hier finde klappen nicht :-(
slider,percent.pct kennt mein fhem nicht ?!?
Und die Kombis bin ich hier alle durch ...

# Mein knxd
define KNX TUL knxd:localhost 3.1.253

define sz.li.decke KNX 3/1/0:dpt1
attr sz.li.decke IODev KNX
attr sz.li.decke devStateIcon on::off off::on
attr sz.li.decke room Schlafzimmer
attr sz.li.decke webCmd on:off

define sz.di.decke KNX 3/2/0:dpt3 3/2/2:dpt5
attr sz.di.decke IODev KNX
attr sz.di.decke room Schlafzimmer
#attr sz.di.decke eventMap on:100% off:0%
#attr sz.di.decke webCmd pct
#attr sz.di.decke webCmd state
#attr sz.di.decke devStateIcon 0%:up 100%:down
#attr sz.di.decke webCmd stop:up:90:80:70:60:50:40:30:20:10:down
attr sz.di.decke slider 0,1,100
attr sz.di.decke webCmd slider

Ein Wert in g1 rein klappt und g2 aktualisiert sich, auch wenn ich an/aus nutze, selbst von externe Steuerung des Dimmers,
aber die Visualisierung bekomme ich im FHEM nicht hin :-(
und der Slider steht immer auf g2 im Object und der auf g1 eins ist falsch mit -100 / 100
g1 müsste 0 - 100% oder 0-255 sein. Die g1 muss vom Typ dpt3 sein. Ein ändern des dpt führt dazu das ein set nicht mehr klappt.
Der Slider müsste eher die Werte umsetzen. Aber auch ein 0,1,255 wir nicht akzeptiert.
Es gibt auch kein Slider in der Übersicht, so wie bei den Lampen an/aus. In den ganzen Screenshots sehe ich hier aber immer tolle Slider :-)

Ganz schön verwirrend ...

Nachtrag:
Habe das hier gschafft, noch nicht ganz was ich möchte, aber immer hin ...

define sz.di.decke KNX 3/1/0:dpt1 3/2/0:dpt3 3/2/2:dpt5
attr sz.di.decke IODev KNX
attr sz.di.decke room Schlafzimmer
attr sz.di.decke eventMap /on:An/off:Aus/value 10 g2:plus/value -10 g2:minus/
attr sz.di.decke webCmd An:Aus:plus:minus

Kann man hier Screenshots anhängen?


JoeALLb

#6
Hier mal ein Beispiel, ist aber definitiv auch noch nicht fertig ;-)
Aber vielleicht kannst Du dir das für dich wichtige draus herausholen.
Die bisherigen Beispiele basieren alle auf alten Modulen, seither gibt es eigentlich schon 2 neuere Generationen des KNX-Moduls ;-)

Nachtrag: Die GAD für command, also 7/7/60 ist nur eine dummyGAD, damit es angezeigt wird. Hier müsste das KNX-Modul noch um FHEM-Funktionen wie setList erweitert werden. Geht aber so auch.

define knx.licht.beispiel2 KNX 7/7/58:dpt5.001:licht:nosuffix\
7/7/60:dpt1.001:command:nosuffix
attr knx.licht.beispiel2 eventMap {\
  dev=>{\
'^command.(\d+)?$'=>'licht $1',\
  },\
  usr=>{\
    '^command.Ein'=>'licht 100',\
    '^command.Aus'=>'licht 0',\
    '^command.(\d+)?$'=>'licht $1',\
  },\
  #TODO: geht nicht: \
  fw=>{\
    '^command'=>'command',\
    '^Aus'=>'Aus',\
    'steuern'=> '',\
  }\
}
attr knx.licht.beispiel2 room zBeispiele
attr knx.licht.beispiel2 webCmd command:licht
attr knx.licht.beispiel2 webCmdLabel  ;\
:Dimm
attr knx.licht.beispiel2 widgetOverride devStateIcon:textField-long\
stateCmd:textField-long\
stateRegex:textField-long\
eventMap:textField-long\
widgetOverride:textField-long\
licht:slider,0,10,100\
command:uzsuSelectRadio,Ein,Aus,50
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

homa

Diesmal stecke ich fest  >:(

Kann es sein das mir etwas fehlt? Ich habe noch keine weitere Visu installiert! Nur Raspi,knxd,FHEM.


define sz.di.decke.TEST2 KNX 3/2/0:dpt3 3/2/2:dpt5
attr sz.di.decke.TEST2 IODev KNX
attr sz.di.decke.TEST2 icon taster
attr sz.di.decke.TEST2 room Schlafzimmer
attr sz.di.decke.TEST2 webCmd slider,0,1,10


Ich bekomme hier einfach keinen Slider hin, noch nicht einmal nur so ohne Funktion.

PS Warum sind da ständig diese captchas obwohl man angemeldet ist?

homa

Nachtrag:

define TEST dummy
attr TEST room Schlafzimmer
attr TEST setList Wert:slider,0,1,100
attr TEST webCmd Wert

Sobald ich das aber von dummy zu KNX ändere klappt der slider wieder nicht. Ich verstehe die Fehlermeldung noch nicht:
ERROR:
TEST: unknown attribute setList. Type 'attr TEST ?' for a detailed list.

TEST: unknown attribute ?, choose one of alias comment eventMap group room suppressReading userReadings verbose IODev do_not_notify showtime answerReading stateRegex stateCmd putCmd format listenonly readonly slider useSetExtensions event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat timestamp-on-change-reading cmdIcon devStateIcon devStateStyle icon sortby webCmd webCmdLabel widgetOverride userattr

Entschuldige, aber ich versuche das echt Schritt für Schritt mir einzurichten, ich will verstehen wie das geht und nicht nur copy und paste ...

PS Grafiken kann man nicht nachträglich anhängen beim editieren? Die captchas sind übrigens verschwunden?! Toll :-)

JoeALLb

Warum versuchst du mein Beispiel nicht? So macht helfen leider keinen Spaß....
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

homa

Hallo Joe,

verzeihe das ich Deine Gefühle verletzt habe, weil ich scheinbar Deine Hilfe nicht benutzt habe. Jeder lernt auf seine Weise.
Ich habe Dein Beispiel intensiv benutzt. Stelle aber fest das Slider bei KNX scheinbar höhere Kunst ist.
Weiterhin unterscheidet sich Dein Beispiel von meiner Frage, weil die KNX Gruppenadresse bei mir der Rückmeldewert ist und in Deinem Beispiel die Gruppe für den absolut Wert benutzt werden muss. Dieser kann aber leider nicht gelesen werden. Auch wenn man die Flags passend in der ETS setzt. Ein Leseanfrage an den Bus bleibt hier unbeantwortet.

Schlaf.Licht schalten.3/1/0   Decke   EIS 1 'Switching' (1 Bit)   Low   
Schlaf.Licht dimmen.3/2/0   Decke   EIS 2 'Dimming - control' (4 Bit)   Low   
Schlaf.Licht dimmen.3/2/1   Decke absolut   Uncertain (1 Byte)   Low   
Schlaf.Licht dimmen.3/2/2   Decke Wert Rückmeldung   Uncertain (1 Byte)   Low
   

Dadurch klappt in der angehängten Grafik auch nicht die Aktualiesrung der (2) und selbst wenn ich in der (2) via Slider das Licht anschalte, bleiben die Buttons ohne Darstellung. In (1) und (3) aktualisieren sich die Visualisierung.
Ich werde das Thema Slider und Dimmen auf später vertagen. Mein Anliegen die Heizungen alle zu visualisieren klappt schonmal.
Dein Beispiel konnte ich wunderbar für die Heizungsdarstellung verwenden. Hier kann ich (grüner Pfeil) auch auf das Icon klicken und der Status wird weitergeschaltet. Der Button aktualisiert sich dementsprechend auch.

# HEIZUNG
# SZ
define sz.hz.ist KNX 3/3/3:dpt9:get
attr sz.hz.ist IODev KNX
attr sz.hz.ist devStateStyle style="text-align:left;;font-weight:bold;;"
attr sz.hz.ist icon rc_INFO2
attr sz.hz.ist room Schlafzimmer,Heizung
define sz.hz.ba KNX 3/3/8:dpt5
attr sz.hz.ba IODev KNX
attr sz.hz.ba devStateIcon Comfort:status_comfort:2 Standby:status_standby:3 Night:status_night:1
attr sz.hz.ba eventMap {\
  usr=>{\
    '^ModeName.Comfort'=>'1',\
    '^ModeName.Standby'=>'2',\
    '^ModeName.Night'=>'3'\
       },\
  fw=>{\
    '1'=>'Comfort',\
    '2'=>'Standby',\
    '3'=>'Night'\
  }\
}

# WR
define wr.hz.ist KNX 11/3/3:dpt9:get
attr wr.hz.ist IODev KNX
attr wr.hz.ist icon rc_INFO2
attr wr.hz.ist room Heizung
define wr.hz.ba KNX 11/3/8:dpt5
attr wr.hz.ba IODev KNX
attr wr.hz.ba devStateIcon Comfort:status_comfort:Standby Standby:status_standby:Night Night:status_night:Comfort
attr wr.hz.ba eventMap /value 1:Comfort/value 2:Standby/value 3:Night
attr wr.hz.ba icon taster
attr wr.hz.ba room Heizung
attr wr.hz.ba stateFormat ModeName
attr wr.hz.ba userReadings ModeName { ReadingsVal("wr.hz.ba","state","0") == 1 ? "Comfort" : ReadingsVal("wr.hz.ba","state","0") == 2 ? "Standby" :  ReadingsVal("wr.hz.ba","state","0") == 3 ? "Night" :  "Error" }
attr wr.hz.ba webCmd Comfort:Standby:Night


Kann man eigentlich nicht im Commandbereich den aktuellen Wert einfach in Fett darstellen oder muss man immer über widgetOverride mit diesem Button-Objekt gehen? Es ergeben sich für mich noch viele neue Fragen.
Auch habe ich jetzt das Problem von Warnungen im Logfile beim speichern der fhem.cfg wahrscheinlich wegen dem  userReadings ModeName

...
2018.10.22 12:37:13 1: PERL WARNING: Argument "Comfort" isn't numeric in numeric eq (==) at (eval 36547) line 1, <$fh> line 35.
2018.10.22 12:37:13 1: PERL WARNING: Argument "Standby" isn't numeric in numeric eq (==) at (eval 36549) line 1, <$fh> line 41.
...


Hier würde ich gerne erst mehr über die Objekte, Struktur und Möglichkeiten in FHEM lernen. Da ich keine Perl Syntax kann, habe ich mir estmal ein Buch bestellt. Trotzdem fehlt mir noch ein Grundverständnis in FHEM. Wo finde ich hier eine Grundkurs-Dokumentation?
Ich habe hauptsächlich versucht das Wiki zu durchforsten.

https://wiki.fhem.de/wiki/Klammerebenen
https://wiki.fhem.de/wiki/Literatur
https://fhem.de/Heimautomatisierung-mit-fhem.pdf
(geht leider nicht wirklich um den KNX Bereich)

Aber DIE Seite dafür habe ich noch nicht gefunden ...

Gibt es Objekte die zum Beispiel seit einer Statusänderung die Minuten anzeigt? Beispiel Fenster auf seit X min? Und welches sich dann auch in der Visualisierung selber updatet?
Verstanden habe ich ein Objekt via define anzulegen. Und es gibt in der Visualisierung den Namen-, Status- und Command-Bereich !??
Wie kann ich jetzt auf Änderungen von anderen Objekten reagieren und meine Objekt Darstellung verändern?

Wie Du siehst versuche ich schon Hilfe anzunehmen und auch in der Doku zu suchen.
Es bleibt spannend.

Viele Grüße
Matthias

antonwinden

#11
warum nimmst du dpt5 und nicht dpt5.001? -> 0-255 Werte auf 0-100 abbilden kann nix vernünftiges bringen

und warum probierst du nicht die beispiele aus und näherst dich dann deinen einstellungen an?
und bei den einzelnen devices siehst du die letzte statusänderung automatisch außer es ist in knx so eingestellt das die statusmeldung zyklisch gesendet wird. daraus sollte sich problemlos die vergangene zeit errechnen lassen...

gruß anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

homa

Hallo Anton,

ja ich habe die verschiedenen Datentypen im KNX Modul von FHEM auch entdeckt und versuche mich gerade daran hier etwas Licht reinzubringen.
Danke für den Hinweis.

Grüße
Matthias

GammaTwin

Grüße,

auch wenn dieser Thread etwas älter ist. Aber der Betreff passt so gut  :)

Ich habe es so gelöst.
https://forum.fhem.de/index.php?topic=75036.msg929156#msg929156
Zitat von: GammaTwin am 11 April 2019, 15:15:35Ziel ist es, alle KNX-Zustände abzufragen, ohne den Bus zu überlasten. Gelöst habe ich es über einen Dummy und ein Notify. Der Dummy ist der Schalter und das notify führt aus.
Im Dummy habe ich auch den Wert für den Fortschrittsbalken für die smartVISU intergiert.

Das noch kombiniert mit einem global:"INITIALIZED"