Vorgehen bei Update auf 5.7

Begonnen von Gunther, 30 Dezember 2015, 14:20:19

Vorheriges Thema - Nächstes Thema

Gunther

Damit ich jetzt gleich aktuell bin und mich das Ganze nicht später wieder einholt, möchte ich vor Update auf 5.7 gerne meine Installation vorbereiten und grob testen.

Folgende Hinweise werden ja gegeben:
- @ und % im notify/etc gibts nicht mehr, genauso wie %NAME, %EVENT. Bitte stattdessen $NAME, $EVENT verwenden. Das ist uniform in fhem-Befehlen,  perl-Einzeiler {}, und im shell-Aufruf "" moeglich. Damit faellt auch die Notwendigkeit von @@/%% weg. Fuer Details siehe den (seit lange unveraenderten) commandref Eintrag fuer notify.
- $value{def} gibts nicht mehr, bitte Value("def") verwenden
- lastinclude gibts nicht mehr, bitte "define XX notify global:INITIALIZED include YYY" verwenden


Dazu habe ich einige Fragen, da ich etwas Respekt vor diesem Update und viel Copy&Paste Code habe:
1.) Jetzt ist mir nicht klar, wo ich überall schauen muss:
a) fhem.cfg
b) 99_RPiUtils.pm
99_UtilsMaxScan.pm
99_myUtils.pm
99_myUtilsMuell.pm
c) Plotdateien
d) nochwo?

2.) Wie checke ich im Detail? (Ich bin Perl-Legastheniker)
Geht es "nur" um notify-Einträge?

Ich habe zum "%" und "@" z. B. folgenden Eintrag:
define k_hr_Wassermelder_chk notify k_hr_Wassermelder:contact.* { \
if("%" !~ m/dry/) {\
  { DebianMail('xxx@@gmx.de','FHEM Wasseralarm','@ %')};;\
  Log 3, "@: Wassermeldung %";;\
}\

Wann muss ich etwas ändern? (Ich gehe mal davon aus, dass das @@ zu einem @ wird., Muss mehr getan werden?)

3.) attr autocreate filelog ./log/%NAME-%Y.log wird
attr autocreate filelog ./log/$NAME-%Y.log  ?

4.) Bzgl. der Klammern finde ich in der commandref keine runden Klammern () mehr.
Ich habe z. B.
# Zirkulationspumpe nach 20 Minuten wieder ausschalten
# über FS20-Schalter
define k_WW_Zirkulationspumpe.schalten notify k_WW_Zirkulationspumpe.sender { if (Value("k_WW_Zirkulationspumpe_Sw") eq "off") { fhem("set k_WW_Zirkulationspumpe_Sw on ;; define k_WW_Zirkulationspumpe_20m_off at +00:20:00 set k_WW_Zirkulationspumpe_Sw off  ") } else { fhem("set k_WW_Zirkulationspumpe_Sw off") }}

Muss ich hier etwas ändern?

5.) Bzgl.: $value{def}
Folgenden Eintrag habe ich gefunden:
attr TV_Abend_Abend valueFormat {( index($READING,"_Original") > 0)?OMDBRating($VALUE):$VALUE}
Muss ich da bei den Value Werten etwas ändern?

Freue mich über Tipps zu einer sinnvollen Vorgehensweise.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

viegener

Erstmal Kopf hoch so schlimm wird es bestimmt nicht  ;)

Erste Anmerkungen:

Ich weiss zwar nicht, was Du in den gelisteten pm-Dateien machst, aber normalerweise wäre es nicht notwendig dort Anpassungen zu machen, es ist ja kein perl-Update sondern eine Veränderung innerhalb von FHEM. Ausnahme wäre, wenn Du in den pm-Dateien Ausdrücke hast, die z.B. dynamisch notify-Devices anlegen.

Es betrifft nicht nur notify, dazu am besten den Thread (oben rot verlinkt nochmal genau durch).

In dem Beispiel notify geht es nicht nur um @@ sondern primär um die Verwendung von  @ und %
(Diese müssen ersetzt werden)

Mein Vorschlag ich würde zuerst nach @ suchen und Verwendungen von Einzel-@ umbauen.
Dann alle verbleibenden @@ in einfache @ umsetzen.
Analog für % / %%

Zu  Deinem $VALUE, ich vermute das ist Teile einer Readinggroup, das hat sich m.W. nicht verändert.

Vielleicht nochmal die Anmerkung, die Hinweise genau zu lesen. Da steht nicht, dass sich $VALUE verändert hat, sondern $value{def}



Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Gunther

So, wieder @home ;-)

Danke für Deinen Post.

Mir ist noch nicht klar, wie ich % und @ ersetze.
Ich musste jetzt erstmal forschen, wofür es überhaupt verwendet wird/ wurde.

Ich habe in der commandref unter notify folgendes gefunden:

ZitatNote: the following is deprecated and will be removed in a future release. It is only active for featurelevel up to 5.6. The described replacement is attempted if none of the above variables ($NAME/$EVENT/etc) found in the command.

    The character % will be replaced with the received event, e.g. with on or off or measured-temp: 21.7 (Celsius)
    It is advisable to put the % into double quotes, else the shell may get a syntax error.
    The character @ will be replaced with the device name.
    To use % or @ in the text itself, use the double mode (%% or @@).
    Instead of % and @, the parameters %EVENT (same as %), %NAME (same as @) and %TYPE (contains the device type, e.g. FHT) can be used. The space separated event "parts" are available as %EVTPART0, %EVTPART1, etc. A single % looses its special meaning if any of these parameters appears in the definition.


Jetzt ist mir unklar, was ich in folgenden Punkten eintragen muss:

1.)
define k_hr_Wassermelder_chk notify k_hr_Wassermelder:contact.* { \
if("%" !~ m/dry/) {\
  { DebianMail('EMAILADRESSE@@mail.com','FHEM Wasseralarm','@ %')};;\
  Log 3, "@: Wassermeldung %";;\
}\
}


Muss das so aussehen?:
define k_hr_Wassermelder_chk notify k_hr_Wassermelder:contact.* { \
if("k_hr_Wassermelder:contact" !~ m/dry/) {\
  { DebianMail('EMAILADRESSE@mail.com','FHEM Wasseralarm','k_hr_Wassermelder k_hr_Wassermelder:contact')};;\
  Log 3, "k_hr_Wassermelder: Wassermeldung k_hr_Wassermelder:contact";;\
}\
}


Oder kann ich das einfacher machen, indem ich generell (außer bei Baudraten, E-Mail-Adressen etc.)
% gegen $EVENT
und
@ gegen $NAME

ersetze?

2a)
Oder bei Logs:
attr global userattr cmdIcon devStateIcon devStateStyle fm_fav fm_groups fm_name fm_order fm_type fm_view fp_Erdgeschoss fp_Statuswerte icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log


oder

2b)
attr autocreate filelog test2/log/%NAME-%Y.log

Bleibt das % oder gegen was muss ich hier ersetzen?

3)
Normale Angaben wie diese können bleiben, korrekt?
attr eg_az_Jalousie devStateIcon 0%:up 100%:down


FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

Benni

#3
Zitat von: Gunther am 03 Januar 2016, 17:43:12
Oder kann ich das einfacher machen, indem ich generell <...>
% gegen $EVENT
und
@ gegen $NAME

ersetze?

Ja! Und es geht in aller erster Linie um notify!
(nicht um Logs o.ä.)

Also sollte das von dir als Beispiel angeführte notify einfach so abgändert werden:

define k_hr_Wassermelder_chk notify k_hr_Wassermelder:contact.* { \
if("%" !~ m/dry/) {\
  { DebianMail('EMAILADRESSE@mail.com','FHEM Wasseralarm',"$NAME $EVENT")};;\
  Log 3, "$NAME: Wassermeldung $EVENT";;\
}\
}


Und achte bitte auch auf die geänderten Anführungszeichen (") bei DebianMail, sonst funktioniert die Ersetzung von $NAME und $EVENT nicht.
Ebenso kann in der E-Mail-Adresse das doppelte @ wegfallen.

Das ganze kannst du eigentlich auch schon jetzt, vor einem Update auf Version 5.7 (inkl. Featurelevel 5.7) testen.
(Der Wegall der doppelten @ in der Mail-Adresse funktioniert schätzungsweise erst nach dem Update)

Gunther

Danke, dass hilft mir schon sehr.

Muss die Zeile
if("%" !~ m/dry/) {\

dann nicht so aussehen?:
if("$EVENT" !~ m/dry/) {\

Was hat sich denn bei DebianMail bzgl. Anführungszeichen geändert? Finde in der commandref leider nichts dazu.
In dem von Dir geänderten Beispiel stehen (') und (") drin.
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

viegener

Ja auch im if muss das % ersetzt werden.

bei Debianmail hat sich nichts verändert, aber es gibt in PERL einen Unterschied zwischen einfachen und doppelten Anführungszeichen. Bei einfachen werden keine Ersetzungen durchgeführt und in perl ist @ ein Zeichen mit spezieller Bedeutung.

Am besten mal ein Tutorial über perl huer lesen, denn das spielt meines Erachtens in FHEM immer mal wieder in eigene Konstrukte herein.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

satprofi

Kurze frage,earum wutde dad eigentlich abgeändert zu 5.6 ?

Sent from my OPO

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

marvin78

Die alte Variante ist schon seit Ewigkeiten deprecated (das war in der commandref zu notify schon seit sehr langer Zeit nachlesbar) und die neue funktioniert schon sehr lange. Man hat zu einer Variante gewechselt, die einfacher und weniger Anfällig ist (keine Maskierung notwendig). Es also eigentlich nichts geändert, es wurde eine Funktion abgeschaltet, die ohnehin schon lange unerwünscht war und einen besseren Ersatz hatte.

Benni

Zitat von: viegener am 03 Januar 2016, 19:06:03
Ja auch im if muss das % ersetzt werden.

Dreimal drübergeschaut und trotzdem eins übersehen.
War ja klar!  ;D

viegener

Zitat von: satprofi am 03 Januar 2016, 19:11:36
Kurze frage,earum wutde dad eigentlich abgeändert zu 5.6 ?

Sent from my OPO

Klingt nach kaputter Rechtschreibkorrektur  ;)

Wie gesagt die Funktion der Anführungszeichen wurde nicht geändert und kommt auch nicht aus fhem.
Die anderen Änderungen sind auch in den Updatehinweisen erklärt, aber in kurz geht es wohl auch darum Konsistenz zu schaffen (zwischen verschiedenen Kommandos etc). Für Neueinsteiger erleichtert das ebenfalls die Verwendung.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Puschel74

ZitatMuss die Zeile
if("$EVENT" !~ m/dry/) {\
Muss nicht kann auch so
if($EVENT !~ m/dry/) {\
und funktioniert bei mir seit geraumer Zeit einwandfrei.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Gunther

#11
Danke Euch allen. Nach Mini-Tests scheint FHEM zu funktionieren.

Wie kann ich mein notify testen, also einen Batterieleerstand simulieren?

define k_hr_Wassermelder_chk notify k_hr_Wassermelder:contact.* { \
if($EVENT !~ m/dry/) {\
  { DebianMail('EMAILADRESSE@mail.com','FHEM Wasseralarm',"$NAME $EVENT")};;\
  Log 3, "$NAME: Wassermeldung $EVENT";;\
}\
}

FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

marvin78