Anfängerprobleme mit Variablen

Begonnen von LCN-User, 05 Mai 2013, 12:22:07

Vorheriges Thema - Nächstes Thema

Puschel74

Hallo,

ZitatUnd wenn wir schon bei den Seltsamheiten der "neuen" AVM-Labor sind

Fragen diesbezüglich bitte an AVM stellen und deren Antwort hier posten - auch Rudi ist neugierig inwieweit die Ihre Labor supporten (nämlich gar nicht).
Also bitte das fhem-5.4-image einspielen und nicht mit der Labor von AVM rumfrickeln.

Grüße
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.

LCN-User

Ich bin für die Hilfe dankbar - aber hier liest du nicht, was ich geschrieben habe.

In diesem Thread steht mindestens vier Mal, dass ich die 5.4 eingespielt habe - zuletzt direkt in meinem letzten Posting. Die 5.4 läuft seit gestern früh 8.30 Uhr und alles bezieht sich darauf.
Zitat2013.05.05 18:47:17 0: Server started with 76 defined entities (version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3128 2013-04-28 12:40:28Z rudolfkoenig $, pid 3326)

Wenn also das Update auf 5.4 die AVM-Version ersetzt: warum bleibt der Event-Monitor leer, obwohl alle Sensoren korrekt protokolliert werden und der Zustand im Webfrontend richtig angezeigt wird?

Gruß,
LCN-FHEM-User

Puschel74

Hallo,

dann hab ich hier
ZitatUnd wenn wir schon bei den Seltsamheiten der "neuen" AVM-Labor sind: Nach Einspielen der Labor 22317 bleibt der Event-Monitor leer.
wirklich was überlesen - sorry.

Grüße
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.

LCN-User

Never mind.

Ich habe jetzt ein wenig im Forum gesucht und bin nicht allein. Da bei den Betroffenen das System aber ansonsten funktioniert, hat dies keine Auswirkung auf den Notify. Um den Event-Monitor werde ich mich separat kümmern.

Also hole ich noch einmal meine Frage von oben hervor: muss bei Eingabe von "Trigger DisplayFensterBadWC" die Routine durchlaufen und entsprechende log-Einträge erzeugt werden? Wie gesagt, ich sehe nichts.

Gruß.

MisterEltako

Zunächst

define DisplayFensterBadWC notify DisplayFensterBadWC {...

Das ist nicht korrekt!

Das Notify darf nicht genau wie das auslösende Device lauten!!!!!

z.B. so könnte es gehen:

define Pruef_Festerzustand notify DisplayFensterBadWC {....

Wobei "DisplayFensterBadWC" angenommen das Device ist, bei welchem die Events kontrolliert werden.

Es sind noch Syntaxfehler im nachfolgenden Code - teste ich gerade, aber das Notify löst erstmal aus.

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

LCN-User

Hi Mr. Eltako,

ich drehe am Rad.

DEF des Notify sieht im Webfrontend jetzt so aus:
define DisplayBadWC notify FensterBadWC {
...}


In der FHEM.CFG steht aber folgendes:
define DisplayFensterBadWC notify define DisplayBadWC notify FensterBadWC {\
...


Ich habe die Zeile im DEF-Fenster geändert, save eingegegeben und später noch einmal "save fhem.cfg" angeklickt.

Wieso sind die Inhalte nicht identisch? Wie können sie überhaupt verschieden sein?

LCN-User

Zitat von: MisterEltako schrieb am So, 05 Mai 2013 19:04Zunächst
Das Notify darf nicht genau wie das auslösende Device lauten!!!!!
Ich habe zwar keine Ahnung, möchte aber doch widersprechen. Genau dieser Fall steht als explizites Beispiel im Manual "Heimautomatisierung mit fhem - für Einsteiger". Das beschriebene Beispiel lautet

"define Abends notify Abends set ..".  und wird getriggert mit "Trigger Abends".

Grüße,
LCN-FHEM-User

UliM

Zitat von: LCN-FHEM-User schrieb am So, 05 Mai 2013 19:36Wieso sind die Inhalte nicht identisch? Wie können sie überhaupt verschieden sein?
Das ist so gewollt.
Man könnte nun lange erklären, warum in fhem.cfg Semikola gedoppelt werden müssen und Zeilenumbrüche mit einem backslash geschützt werden - man kann es aber auch einfach akzeptieren. Sprich: Is halt so.

Im Webfrontend wurde als feature eingebaut, dass diese beiden eigentlich unschönen Sonderheiten den user nicht belasten sollen.

Deshalb weichen die beiden Darstellungen gewollt voneinander ab.  

=8-)



RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

LCN-User

Zitat von: LCN-FHEM-User schrieb am So, 05 Mai 2013 19:36DEF des Notify sieht im Webfrontend jetzt so aus:
define DisplayBadWC notify FensterBadWC {
...}


In der FHEM.CFG steht aber folgendes:
define DisplayFensterBadWC notify define DisplayBadWC notify FensterBadWC {\
...
Scheint ein Feature zu sein. Im DEF-Fenster steht nur der Teil ab dem Notify. Das "define 'Name'" wird nicht angezeigt. Das notify ist also von der Definition im Prinzip OK. Mögliche Syntaxfehler ausgenommen.

justme1968

das beispiel mit den device das so heisst wie das notify ist für den fall gedacht das das notify nicht an einem wirklichen device hängt und auf events reagiert sondern fuer ein notify das nur von hand per trigger aufgerufen wird. der name des device ist in dem fall eigentlich egal solange es nicht wirklich existiert. der einfachste fall sicherzustellen das es nicht exisitiert und auch später nicht aus versehen angelegt wird ist halt es genau so zu nennen wie das notify.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

MisterEltako

Versuche folgendes:

1. Loesche die DEF deines Notifys und speichern
2. Oeffne unter "Edit Files" deine Notify-Definition in der fhem.cfg und speichern
3. Oeffne wieder fhem.cfg und kopiere nachfolgendes in die Datei:


define DisplayFensterBadWC notify FensterBadWC {\
 Log 3,"Fensterstatus wird geprüft";;\
 my $vmTransfer = 0b00000000;;\
 my $vmTransfer43 = 0b00001100;;\
 my $WindowState = Value("FensterBadWC");;\
 my $VM = "";;\
 $WindowState = Value("FensterBadWC");;\
 if($WindowState eq "closed"){\
 $vmTransfer43 = 0b00000000;;\
 }elsif($WindowState eq "tilted"){\
 my $vmTransfer3 = 0b00000100;;\
 }\
 $vmTransfer = "$vmTransfer43"."vmTransfer3";;\
 $VM = sprintf ("%%d",$vmTransfer);;\
 Log 3,"String ist zusammengebaut: $VM";;\
 GetHttpFile("192.168.178.5:8000", "/vm_bin?sgmt=0&module=216&value=$VM");;\
}

4. trigger FensterBadWC  und Enter

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

LCN-User

So, dieser aus dem DEF-Fenster gezogene Code macht als proof-of-concept, was er soll.
FensterBadWC {
   my $vmTransfer   = 0b00000000;
   my $vmTransfer43 = 0b00001100;
   my $WindowState  = Value("FensterBadWC");
   my $VM = "";
   { if ($WindowState eq "closed") {
       ($vmTransfer43 = 0b00000000) ; }
     elsif ($WindowState eq "tilted") {
        ($vmTransfer43 = 0b00000100); }
   }
   $vmTransfer = $vmTransfer43 ;
   $VM = sprintf("%%d", $vmTransfer);
   { GetHttpFile("192.168.178.5:8000", "/vm_bin?sgmt=0&module=216&value=$VM");0 }
}


Danke an alle. Habe heute viel über Perl-Deklarationen und geschweifte Klammern gelernt!

LCN-User

Zitat von: MisterEltako3. Oeffne wieder fhem.cfg und kopiere nachfolgendes in die Datei:
Das hat sich überschnitten. Genau die Lösung, die ich inzwischen alleine hinbekommen habe - nach deinem vorherigen Input.

SChade, dass du mir das nicht früher geschickt hast :-)