Rolladen zu und Lamellen quer stellen (Homematic)

Begonnen von mmatt, 08 Mai 2013, 08:39:22

Vorheriges Thema - Nächstes Thema

MisterEltako

Bitte so probieren:

if (ReadingsVal ($aktorname,"level","keinWert") eq "0 %") {


sub
Beschattung($)
{
my $aktorname=shift;
#Rolladen ganz herunterfahren
  fhem("set $aktorname 0");
#Lamellen umstellen
  fhem("define notify_Temp notify $aktorname {
     if (ReadingsVal ($aktorname,"level","keinWert") eq "0 %") {
         fhem("set $aktorname 3");
         fhem("define Stop_Rollo at +00:00:30 delete notify_Temp");
     }
  }");;\
}


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

mmatt

Zitat von: MisterEltako schrieb am Di, 14 Mai 2013 11:10Bitte so probieren:

if (ReadingsVal ($aktorname,"level","keinWert") eq "0 %") {


sub
Beschattung($)
{
my $aktorname=shift;
#Rolladen ganz herunterfahren
  fhem("set $aktorname 0");
#Lamellen umstellen
  fhem("define notify_Temp notify $aktorname {
     if (ReadingsVal ($aktorname,"level","keinWert") eq "0 %") {
         fhem("set $aktorname 3");
         fhem("define Stop_Rollo at +00:00:30 delete notify_Temp");
     }
  }");;\
}


MfG, MisterEltako

Leider:
syntax error at ./FHEM/99_Utils.pm line 234, near "if (ReadingsVal ($aktorname,"level" syntax error at ./FHEM/99_Utils.pm line 239, near "}"

Ich hab auch schon ein Beispiel gesucht, wo ein notify mit einer if-Bedingung in einer 99_utils.pm verwendet wird. Leider habe ich nichts gefunden.

Gruss Martin


- FHEM 5.5 auf RPI REV.2
- CUL V3 868MHz
- CUL_HM: HM-LC-Dim1TPBU-FM/HM-LC-Swl1PBU-FM/HM-LC-Sw1-BA-PCB/HB-UW-Sen-THPL-O/HM-SEN-MDIR-SM

Puschel74

Hallo,

ich hab leider nicht viel Ahnung aber warum wird hier

fhem("set $aktorname 3");
nur 1 Semikolon ohne Zeilenumbruch und hier
}");;\
2 Semikolon mit Zeilenumbruch geschrieben?

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.

MisterEltako

Zitatich hab leider nicht viel Ahnung aber warum wird hier

Na,na,na, nicht das Licht unter den Scheffel stellen.... ;o)

Ist natürlich korrekt: (da ich meist erst allesm in fhem.cfg probiere ist das ;;\ übrig geblieben beim Transfer in die 99_Utils.pm.

Also nochmal:

sub
Beschattung($)
{
my $aktorname=shift;
#Rolladen ganz herunterfahren
  fhem("set $aktorname 0");
#Lamellen umstellen
  fhem("define notify_Temp notify $aktorname {
     if (ReadingsVal ($aktorname,"level","keinWert") eq "0 %") {
         fhem("set $aktorname 3");
         fhem("define Stop_Rollo at +00:00:30 delete notify_Temp");
     }
  }");
}


bei (ReadingsVal ($aktorname,"level","keinWert") eq "0 %") bin ich mir nicht ganz sicher, ob nicht doch (ReadingsVal ("$aktorname","level","keinWert") eq "0 %") - bitte beides austesten!!!

MfG, MisterEltako

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

Puschel74

Hallo,

und auch mal zwischen ReadingsVal und der ( das Leerzeichen weglassen.
Nur für einen Versuch.

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.

mmatt

Find ich echt nett von Euch, mir zu helfen. Erst mal Danke.

Also ich hab alle Varianten ausprobiert.
Variante: ReadingsVal ("$aktorname",...
Variante: ReadingsVal ($aktorname,...
Variante: ReadingsVal(...
Variante: ReadingsVal (...

Alle mit dem etwa gleichen Ergebnis:
-> syntax error at ./FHEM/99_Utils.pm line 234, near "if (ReadingsVal ("$aktorname"


Kann das Problem der Zeilenumbruch sein ?:
notify $aktorname {
     if (ReadingsVal...
- FHEM 5.5 auf RPI REV.2
- CUL V3 868MHz
- CUL_HM: HM-LC-Dim1TPBU-FM/HM-LC-Swl1PBU-FM/HM-LC-Sw1-BA-PCB/HB-UW-Sen-THPL-O/HM-SEN-MDIR-SM

MisterEltako

Eigentlich nicht. Da ist Perl sehr tolerant. In der FHEM.cfg wäre das ein Problem, aber hier nicht.

Ich vermute es liegt an "0 %". Perl kommt mglw. nicht mit dem Leerzeichen klar.

Kannst du bitte nur zum Test "0%" schreiben?


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

mmatt

Nöööö :-(

habs auch mit eq "test" versucht.

Bringt immer noch:
syntax error at ./FHEM/99_Utils.pm line 234, near "if (ReadingsVal ($aktorname,"level"

Hier noch mal der aktuelle Code: (welcher noch nicht funktioniert)
Zitatsub
Beschattung($)
{
my $aktorname=shift;
#Rolladen ganz herunterfahren
  fhem("set $aktorname 0");
#Lamellen umstellen
  fhem("define notify_Temp notify $aktorname {
     if (ReadingsVal($aktorname,"level","keinWert") eq "test") {
         fhem("set $aktorname 3");
         fhem("define Stop_Rollo at +00:00:30 delete notify_Temp");
     }
  }");
}
- FHEM 5.5 auf RPI REV.2
- CUL V3 868MHz
- CUL_HM: HM-LC-Dim1TPBU-FM/HM-LC-Swl1PBU-FM/HM-LC-Sw1-BA-PCB/HB-UW-Sen-THPL-O/HM-SEN-MDIR-SM

Puschel74

Hallo,

was steht den überhaupt in $aktorname?

Grüße

Edith: Nicht was stehen sollte sondern was tatsächlich drinnen steht meinte ich.
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.

MisterEltako

Fehler gefunden! Es liegt an den Anführungszeichen die sich im Define wiederholen. Man müsste dort ' ' verwenden. Dadurch würde sich aber wiederum die Variable nicht aktualisieren.

Ich habe auf die Schnelle die Definition umgestellt. Funktion habe ich noch nicht getestet, aber zunächst keine Syntaxfehler mehr.


sub
Beschattung($)
{
  my $aktorname=shift;
     
   fhem("set $aktorname 0");
   if (defined($defs{notify_Temp})){fhem('delete notify_Temp')};
   fhem("define notify_Temp notify $aktorname {Reverse(\"$aktorname\")}");
}

sub
Reverse($){

  my $aktorname=shift;
  Log 3, "Reverse: $aktorname";
  my $Aktorstand = ReadingsVal("$aktorname","level","keinWert");
  if ($Aktorstand eq "1 %") {
  fhem("set $aktorname 3");
  if (defined($defs{Stop_Rollo})){fhem('delete Stop_Rollo')};
  fhem("define Stop_Rollo at +00:00:30 delete notify_Temp");
 }
}


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

mmatt

Zitat von: MisterEltako schrieb am Di, 14 Mai 2013 22:32Ich habe auf die Schnelle die Definition umgestellt.
Auf die Schnelle :-) :-) :-)
Das ist ganz schön komplex ;-)

Ich werde kommendes Wochenende den Code testen, und berichten.
Habe zur Zeit etwas wenig Zeit.

Ich habe da noch zwei Fragen:
Sind die beiden Zeilen zwingend notwendig ?
if (defined($defs{notify_Temp})){fhem('delete notify_Temp')};
if (defined($defs{Stop_Rollo})){fhem('delete Stop_Rollo')};


Wozu sind im Funktionsaufruf die beiden Backslash ?
Reverse(\"$aktorname\")


@Puschel74
In $aktorname steht zu Zeit noch gar nichts, da bis jetzt noch Syntax-Fehler da waren.
Beim Aufruf der Funktion Beschattung($) übergebe ich dann den Namen meines Rolladen.
Hast Du das gemeint ?

Grüsse an Euch
- FHEM 5.5 auf RPI REV.2
- CUL V3 868MHz
- CUL_HM: HM-LC-Dim1TPBU-FM/HM-LC-Swl1PBU-FM/HM-LC-Sw1-BA-PCB/HB-UW-Sen-THPL-O/HM-SEN-MDIR-SM

Puschel74

Hallo,

Zitat@Puschel74
In $aktorname steht zu Zeit noch gar nichts, da bis jetzt noch Syntax-Fehler da waren.
Beim Aufruf der Funktion Beschattung($) übergebe ich dann den Namen meines Rolladen.
Hast Du das gemeint ?

Eigentlich nicht ;-)
Das ist das was drinnen stehen sollte!
Mir ging es um das was wirklich drinnen steht.

Aber hat sich ja jetzt evtl. auch erledigt durch die Suche und Umsetzung von MisterEltako.

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.

MisterEltako

Zitatif (defined($defs{Stop_Rollo})){fhem('delete Stop_Rollo')};

Nicht zwingend erforderlich, aber eleganter...;o)
Prüft, ob notify noch angelegt ist und löscht es vor Neuanlage ggf.
Ansonsten würde eine Fehlermeldung kommen, das notify schan angelegt wurde und zunächst gelöscht werden muss.

ZitatReverse(\"$aktorname\")

die Backslash's sind erforderlich, da sonst wieder das Problem mit den Anführungszeichen in den Anführungszeichen und damit Syntaxfehler entsteht.
Deswegen ist hier eine Maskierung erforderlich.
Einfache Anführunszeichen (') gehen hier nicht, da sonst der Variableninhalt ($aktorname) nicht aktualisiert wird sondern tatsächlich der String "$aktorname" weitergegeben würde.

Noch ein Hinweis:
$Aktorstand eq "1 %"  ----> musst du bei dir wieder auf "0 %" stellen!!!
(Bei mir fahren die Rollladen auf 1 % runter, daher hatte ich das geändert)


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

vangils

Hallo MisterEltako & Puschel74,

wie ist den die Sache mit dem Rollladenaktor von HM und Jalousienwendung bzw. Querstellen ausgegangen.
Soweit ich das nachlesen konnte, ist die Sache mit der eigentlichen Funktionalität noch nicht gang geklärt gewesen.

lG,

Mario

Gunther

Das interessiert mich auch.

Und an der Stelle nochmal die Frage von oben bzgl. des Registers DriveTurn. Ist das wirklich nur für die Umschalt-Pause des Motors gedacht?

Im Anhang des Anfängerleitfadens steht
ZitatErreicht wird dies, indem man dem Schalter die Fahrzeit des Rollos programmiert. Hierzu wird die
Fahrzeit ,,hoch", ,,runter" und (relevant für Jalousien) die Wendezeit der Lamellen
,,Change" programmiert.
Diese werden in Liste 1 Verwalter – siehe Anhang.

Da hatte ich die Hoffnung, dass es was gibt. Bin aber in den Registern nicht fündig geworden.
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