FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Joschi123 am 12 August 2014, 15:42:33

Titel: Probleme bei und Verknüpfung in Perl um GPIO `s zu Schalten
Beitrag von: Joschi123 am 12 August 2014, 15:42:33
Guten Tag zusammen,
Ich habe derzeit eine Rollosteuerung über FHEM und möchte dass, wenn ich draussen Sitze, das Terrassenrollo nicht runterfährt.
Dazu habe ich mir einen Dummy angelegt (Terrasse). Nun sollen die Rollos nur runterfahren wenn der Dummy "Rollomitte:off und der Dummy "Terrasse:off" geschaltet haben.
Da die ganze Steuerung über die GPIO`s des Raspberry funktioniert, habe ich folgendes versucht

define Rolloversuch notify (Terrasse|wz_Rollomitte) {
my $r1 = $value{"Terrasse"};;
my $r2 = $value{"wz_Rollomitte"};;
if ($r1 eq "on" && $r2 eq "on")
system("fhem-gpio.sh 9 1 &")}
}
}

leider ohne Erfolg :(

ohne die Und Verknüpfung funktionierts

define Rolloversuch notify (Terrasse:on) {\
system("fhem-gpio.sh 9 1 &")}\

Da ich ein kompletter anfänger auf dem Gebiet bin, wäre ich über Hilfe oder anregungen Dankbar :D
Titel: Antw:Probleme bei und Verknüpfung in Perl um GPIO `s zu Schalten
Beitrag von: fhainz am 12 August 2014, 18:07:22
Hallo!

Es ist übersichtlicher wenn du deine .cfg nicht direkt bearbeitest. Wenn du in das detail des notify gehst siehst du einen button DEF. Darauf klicken und deine Script in die textarea schreiben, dann kannst du dir die doppelten ; und den \ am ende eines mehrzeiligen defines sparen.
Der ungetesteter Code würde dann so aussehen:

DEF:

(Terrasse|wz_Rollomitte) {
  my $r1 = Value("Terrasse");
  my $r2 = Value("wz_Rollomitte");
  if ($r1 eq "on" && $r2 eq "on"){
    system("fhem-gpio.sh 9 1 &");
  }
}


Deine Fehler waren:
- $value{"Terrasse"}; -> Richtig Value("Terrasse");
- nach der if( ) fehlt eine {
- eine } zu viel
- falls du mehrzeiligen Code in die .cfg schreibst willst, muss am ende jeder Zeile ein \ sein, deswegen DEF

Zu GPIO schalten gibt es mittlerweile auch ein Modul. Siehe hier (http://fhem.de/commandref_DE.html#RPI_GPIO).

Generell würde ich dir die Einsteifer pdf (http://fhem.de/Heimautomatisierung-mit-fhem.pdf) und die Command Ref (http://fhem.de/commandref_DE.html) ans Herz legen.

Grüße
Titel: Antw:Probleme bei und Verknüpfung in Perl um GPIO `s zu Schalten
Beitrag von: Joschi123 am 13 August 2014, 14:09:04
Danke erstmal für die schnelle Antwort

das Modul RPI_GPIO habe ich auch gesehen und ausprobiert, allerdings schaltet der den GPIO Pin auf Input, Warum? keine Ahnung ???.

Den Code habe ich natürlich auch ausprobiert. leider ohne Erfolg :(

Den Hinweis mit der Def werde ich versuchen umzusetzen. Allerdings hätte ich da eine Frage. Reicht es aus wenn ich auf "modify" oder muss ich noch zusätzlich speichern.

Titel: Probleme bei und Verknüpfung in Perl um GPIO `s zu Schalten
Beitrag von: fhainz am 13 August 2014, 14:18:20
Also bei mir funktioniert das notify (mit dummys)

Value() fragte den Internal STATE ab. Wenn dein STATE (zB durch stateFormat) nicht gleich dem Reading state ist solltest du ReadingsVal("<name>","<reading>","<defaultWert">) verwenden.
Ob dein notify ausgelöst wurde kannst du am STATE des notifys ablesen.

Edit:
Ja, du musst nachdem modify noch speichern. Sonst ist deine einstellung nach einem reboot weg.