PiFace

Begonnen von cornelius fillmore, 09 Juni 2013, 08:21:17

Vorheriges Thema - Nächstes Thema

MaJu

Ich antworte mal selbst. Es funktioniert so wie von mir zuvor genannt, die Anschlüsse sind so korrekt.
Erlebnisreiche Grüße aus Leipzig!

makruna

Hallo an alle die amPiFace Modul halfen
Das PiFace Modul ist super,  :) :) :) :)
Vielen Dank

Ich hätte noch eine Frage oder vielleicht auch Anregung
Wie kann ich das PI RACK nutzen.

Güsse makruna

raggywetter

#107
Ich habe den Dämmerungs Schalter (FS20) D_K1 undD_K2 = Kanal 1 u.Kanal 2
Fhem ist auf dem Raspberry Pi
So funktioniert es mit dem Piface
define Schalter1Notify notify D_K1 set myPi 8 %
define Schalter2Notify notify D_K2 set myPi 7 %
Funktion geht mit On Off vom Dämmerungs Schalter
Mit dem Banana Pi und Piface funktioniert nur wenn ich mit putty  dieses eingebe

sudo modprobe spi-sun7i

beSmart

Hallo Forum.

Als blutiger Fhem-Anfänger versuche ich nun schon seit Stunden, PiFace zu überreden, mir zu gehorchen. Die Commandref zum PiFace-Modul habe ich gelesen. Mir erschließt sich noch nicht, wie ich einen Eingang mit einem Ausgang verknüpfe. Habe schon diverse Beiträge gelesen und mir das eine oder andere herausgesucht aber irgendwie tut sich am Modul nichts.
Meine derzeitige cfg. ( Habe schon alles an Beispielcode in diesem Beitrag probiert.)

Define PiFacePi PIFACE
define PiFacePi_1.on dummy
attr PiFacePi_1.on eventMap on:on off:off
attr PiFacePi_1.on room RasPi
define PiFacePi_out1_on notify PiFacePi_1.on set PiFacePi 1 1
define PiFacePi_out1_off notify PiFacePi_1.off set PiFacePi 1 0

Kann bitte mal jemand eine funktionierende cfg. Posten, bei der einer der Taster mit einem Ausgang verknüpft ist und diesen schaltet. Den Rest bekomme ich dann selbst hin.

Vielen Dank

beSmart

Olaf A

#109
Hallo beSmart,

bei mit hat das so geklappt:


define myPi PIFACE
attr myPi portMode0 up
attr myPi room PiFace

define myPi_in0 readingsProxy myPi:in0
attr myPi_in0 eventMap on:0 off:1
attr myPi_in0 getFn 0
attr myPi_in0 getList 0:noArg
attr myPi_in0 room PiFace
attr myPi_in0 valueFn ""

define myPi_poll at +*00:00:01 get myPi in
attr myPi_poll room PiFace


Hat es den aber schon einmal jemand geschaft, einen Tasteingang zum Schalteingang umzubauen?

Sprich wenn eine der Tasten auf dem PiFace gedrückt wird, soll solange der Eingang (oder ein Reading) auf EIN bleiben, bis dieser wieder gedrückt wird.

Währe schön wenn einer mir da mal auf die Sprünge hefen könnte oder so ein Attributes "Switch0 bis Switch7" würde ich mir wünschen.

Gruß Olaf
FHEM auf CubieTruck:
Max mit Cube, HMLAN; MAX-Thermostaten; Homematic-Komponenten, SIS PM Schalter, JeeLink.

kalle0103

Hallo zusammen,

ich habe einen raspberry mit piface im Keller als Alarmanlage. Wenn jemand die Tür öffnet, bleiben 5 s Zeit um mit einem Taster den Alarm zu deaktivieren. Als Eingang dient ein einfach Reed Kontakt, am Türrahmen befestigt. Bei Türöffnung bekomme ich eine pushover Nachricht aufs Handy und nach 5 s dröhnt die Sirene los. Soweit so gut. Ich habe es aber nicht hinbekommen die Sirene nur für eine bestimmte Zeit einzuschalten wie z.B. set PiFace 1 1 on-for-timer 30..... hat jemand einen Rat?

Danke und Gruß

Kalle

MaJu

set PiFace 1 1, sleep 30, set PiFace 1 0
Aber Achtung: sleep führt dazu, dass dein gesamtes FHEM in der Zeit still steht. (wenn ich das richtig in Erinnerung habe)
Wenn du es in einem DOIF verwendest, dann das zweite Komma durch ein Semikolon ersetzen, damit sollte FHEM nicht gesamt still stehen.
Erlebnisreiche Grüße aus Leipzig!

kalle0103

Hallo Maju,

danke für die Info. Ein "Stillstehen" kommt natürlich nicht in Frage. In DOIF muss ich mich mal einlesen.

Gruß

Pascal

kalle0103

Hi,

der sleep Befehlt funktioniert und stoppt das System nicht, wenn dem sleep command eine fhem command folgt. Bei mir klappt es jetzt so zufriedenstellend:

define Sirene_on notify Sirene:on set Test 2 1;; sleep 20;; set Test 2 0;; set Sirene off

Jetzt schaltet das 2. Relais nach 20 s wieder ab...

Danke und Gruß

Kalle

davipet

Moin,

kann es sein, dass das Modul mit der aktuellen WiringPi-Version nicht mehr funktioniert?

Bei mir am Pi 3 B+ mit dem PiFace Digital2 von Element14 funktioniert es jedenfalls nicht :(

Gruß

David

Patrik.S

Ja ist so. Das geht seit der wiringpi Version 2.46 vom März 2018 nicht mehr.
Siehe [Info] wiringpi seit V2.46 ohne direkte & simple -p PiFace Unterstützung: https://forum.fhem.de/index.php/topic,87685.0.html

Man muss den Modul Code anpassen und alle
$gpioCmd -p .....
ändern in
$gpioCmd -x mcp23s17:200:0:0 .....

davipet


Patrik.S

Ohh man....
Linux & Fhem Update gemacht, wiringPi blieb gleich mit der Version 2.46, 55_PIFACE.pm aber nicht in der Update Ignore Liste gehabt....
Das Fhem Logfile hat nach Neustart ohne Ende gespuckt

pinMode: You have not called one of the wiringPiSetup
  functions, so I'm aborting your program before it crashes anyway.


Weil das Fhem Logfile auch nicht den Modulnamen vorne ranschreibt hat die Lernkurve etwas gedauert
Schön das ich erst nach einer Stunde auf meine eigene Lösung gestoßen bin  >:(

Wäre es bitte bitte möglich vom Modul Entwickler diese Änderung offiziell einzubauen. BITTE
Danke!

Patrik.S

Verrückt....
Der Modulcode muss noch weiter angepasst werden, wenn man die Inputs auswerten möchte.
Das setzen eines Output Pin hat zufällig weiter funktioniert beim Wechsel von gpio -p write 200 bis 207 ... auf gpio -x mcp23s17:200:0:0 write 200 bis 207 ...
Aber die Inputs liegen nun woanders
Ist mir nur aufgefallen, weil ich meine Wassermelder Sensoren mal prüfen wollte und zuvor die Output Relais geschaltet habe.
Durch das Schalten der Output Pins, wurde vermeindlich am Eingang eine Änderung erkannt und ich hatte einen Keller voller Wasser  :o

Der Grund ist ersichtlich in den unterschiedlichen Ausgaben.
Während bisher ein readAll über die nun nicht mehr vorhandene Option "-p" die Input und Output Pins in dieser Reihenfolge aufgelistet hat

gpio -p readAll

+------+---------+--------+
| Pin | Digital | Analog |
+------+---------+--------+
| 200 | 1 | 0 |      <--IN
| 201 | 1 | 0 |      ....
| 202 | 1 | 0 |
| 203 | 1 | 0 |
| 204 | 1 | 0 |
| 205 | 1 | 0 |
| 206 | 1 | 0 |      ....
| 207 | 1 | 0 |      <--IN
| 208 | 0 | 0 |      <--OUT
| 209 | 1 | 0 |      ....
| 210 | 0 | 0 |
| 211 | 0 | 0 |
| 212 | 0 | 0 |
| 213 | 0 | 0 |
| 214 | 0 | 0 |       .....
| 215 | 0 | 0 |      <--OUT
+------+---------+--------+


ist die Reihenfolge beim Aufruf über -x mcp23s17.... genau anders herum

gpio -x mcp23s17:200:0:0 readAll
+------+---------+--------+
| Pin | Digital | Analog |
+------+---------+--------+
| 200 | 0 | 0 |      <--OUT
| 201 | 1 | 0 |      ....
| 202 | 0 | 0 |
| 203 | 0 | 0 |
| 204 | 0 | 0 |
| 205 | 0 | 0 |
| 206 | 0 | 0 |      ....
| 207 | 0 | 0 |      <--OUT
| 208 | 1 | 0 |      <--IN
| 209 | 1 | 0 |      ....
| 210 | 1 | 0 |
| 211 | 1 | 0 |
| 212 | 1 | 0 |
| 213 | 1 | 0 |
| 214 | 1 | 0 |      ....
| 215 | 1 | 0 |      <--IN
+------+---------+--------+


Im Modul müssen die beiden Funktionen PIFACE_Read_Outports() und PIFACE_Read_Inports() angepasst werden und das zusätzliche addieren der Zahl 8 von der Outports in die Inputs verschoben werden

sub PIFACE_Read_Outports($$){
my ($updateMode, $hash) = @_;
        my $name = $hash->{NAME};
my ($cmd, $i, $port, $val);
readingsBeginUpdate($hash);
for($i=0; $i<8; $i++){
# old gpio -p option usage: the output ports are located at 208..215: $port = $base + $i + 8;
# with extention call of -x mcp23s17... the output ports are located at 200..207
$port = $base + $i;
                Log3($name, 5, "PIFACE Read_Outports $gpioCmd -x mcp23s17:200:0:0 read $port");
$cmd = "$gpioCmd -x mcp23s17:200:0:0 read $port";
$val = `$cmd`;
$val =~ s/\n//g;
$val =~ s/\r//g;
                Log3($name, 5, "PIFACE Read_Outports val=$val");
if ($updateMode == 1){
  readingsBulkUpdate($hash, 'out'.$i, $val);
} else {
  readingsBulkUpdate($hash, 'out'.$i, $val) if(ReadingsVal($name, 'out'.$i, '') ne $val);
}
}
readingsEndUpdate($hash, 1);
return;
}

sub PIFACE_Read_Inports($$){
my ($updateMode, $hash) = @_;
        my $name = $hash->{NAME};
my ($cmd, $i, $j, $port, $portMode, $val);
readingsBeginUpdate($hash);
for($i=0; $i<8; $i++){
          # old gpio -p option usage: the input ports are located at 200.207: $port = $base + $i;
          # with extention call of -x mcp23s17... the output ports are located at 208..215
  $port = $base + $i +8;
          Log3($name, 5, "PIFACE Read_Inports $gpioCmd -x mcp23s17:200:0:0 read $port");
  $cmd = "$gpioCmd -x mcp23s17:200:0:0 read $port";
  $val = `$cmd`;
  $val =~ s/\n//g;
  $val =~ s/\r//g;
          Log3($name, 5, "PIFACE Read_Inports val=$val");
  if ($updateMode == 1) {
    readingsBulkUpdate($hash, 'in'.$i, $val);
  } else {
    readingsBulkUpdate($hash, 'in'.$i, $val) if(ReadingsVal($name, 'in'.$i, '') ne $val);
  }
}
readingsEndUpdate($hash, 1);
return;
}


Die anderen Modulfunktionen nutze ich nicht, sind also ungetestet, speziell der Watchdog