PiFace

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

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: Puschel74 schrieb am Sa, 24 August 2013 17:39sub schalten($) {
  `gpio -p write 200 1`
}

Klar, das $ wird nicht ausgewertet - wäre hier aber auch egal da Relais_1 übergeben wird und damit kann gpio nichts anfangen.

Warum wertest Du das $ nicht einfach aus, wenn Du es sowieso schon übergibst?


sub schalten($) {
my ($relais) = @_;
my $port = 199 + substr($relais,7,1);
'gpio -p write $port 1'
}

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Puschel74

Hallo,

erstmal danke an betateilchen für die Hilfe.

Es lassen sich nun alle 8 Ports am PiFace über fhem einschalten und auch ausschalten.

In Fhem habe ich dazu folgendes eingetragen:
Für jeden Port einen Dummy angelegt nach der Form:

define Relais_1 dummy
attr Relais_1 webCmd on:off

Dann ein notify
define Relais_Pi notify Relais.* {
  my $aktion = schalten("@");
}

und in der 99_myUtils.pm folgende sub
sub schalten($$) {
  my ($io) = @_;
  my ($value) = (Value($io));
  my $port = 199 + substr($io,7,1);
  if ($value eq "on") {
    $value = "1";
  }
  else {
    $value = "0";
  }
  my ($befehl) = "gpio -p write $port $value";
  `$befehl`
}


Ist nicht schön aber funktioniert.

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.

betateilchen

das mit den Klammern musst Du aber noch üben ;) Und was das mit "my $aktion" für einen Zweck hat, verstehe ich nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Puschel74

Hallo,

Zitat"my $aktion" für einen Zweck hat, verstehe ich nicht.

Ich hab ja gesagt ich muss bei meinen LM75-Sensoren "gutenbergen" und dort wird in $aktion der Rückgabewert gespeichert.
Ok. Die Relais liefern keinen :-)

Ich hab ja gesagt.
ZitatIst nicht schön aber funktioniert.

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.

backbone10

Hi,
danke für eure Antworten.

Ich krieg es leider trotzdem nicht hin. gpio commands funktionieren, in der FHEM Weboberfläche finde ich die beiden Relais und kann sie auch toggeln, aber den Schaltbefehl führt er nicht aus...

Im FHEMLogfile sehe ich jetzt (nach einigen verzweifelten Editierversuchen)

2013.08.27 21:42:29 3: Relais_Pi return value: Not enough arguments for main::schalten at (eval 22) line 1, near ""Relais_1") "

2013.08.27 21:42:48 3: Relais_Pi return value: Not enough arguments for main::schalten at (eval 23) line 1, near ""Relais_1") "

Ich werde noch weiter suchen ;) bin aber leider Neuling auf dem Gebiet und google hat mir auch zu keiner Lösung geholfen. Ist doch weit schwieriger als erhofft..

Vielleicht mag mir wer einen guten Tip geben.....

mfg

bb10

betateilchen

Zitat von: backbone10 schrieb am Di, 27 August 2013 21:56Vielleicht mag mir wer einen guten Tip geben.....

klar. Lies doch einfach die absolut eindeutige Fehlermeldung und verstehe sie. Und dann mach das zweite Dollarzeichen in Deiner Funktionsdefinition weg.

falsch: sub schalten($$)

richtig: sub schalten($)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Puschel74

Hallo,

jo - Fehler von mir, sorry.
Ich werd mich am Wochenende nochmal dran setzen und ein bischen "üben".

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.

backbone10

Hi, kein Problem...Ich habs trotzdem nicht hinbekommen :(

Ich hab leider kein funktionierendes Device (nur das Piface)in meiner FHEM Installation, daher ist es für mich schwierig mich in die Sache einzuarbeiten. Auf jeden Fall bleib ich dran, auch wenn ich zur Zeit alles falsch mache, was falsch gemacht werden kann :)
Das Logfile zeigt jetzt auf jeden Fall keine Fehlermeldungen mehr..

mfg

bb10

Puschel74

Hallo,

ZitatIch hab leider kein funktionierendes Device (nur das Piface)in meiner FHEM Installation,

Du hast das PiFace aber schon an einem RasPi dran *blödfrag* ?
FHEM kann ja auch am Rechner laufen ^^

Du brauchst eigentlich keine anderen Devices für den oben geposteten Code.
Ich hab an meinem RasPi auch nur das PiFace dran und sonst (noch) keine Verbindung zur Hausinstallation sprich es läuft FHEM auf dem RasPi aber ich
hab noch keine Kommunikations-Device (CUL/CUNO etc.) definiert.
Das PiFace lässt sich aber brav über alle 8 Ports schalten.

Wo ist den das Problem?

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.

backbone10

Hallo Puschel74,
danke der Nachfrage....

Ich hab das natürlich am PI dran und auch mit der Emu Software getestet :)
Dass ich keine anderen Devices dafür brauche (ich hab auch gar nicht vor, wireless Sensoren oder Aktoren einzusetzen) hab ich schon mitbekommen, so weit fehlts mir nicht.

Ich wollte damit ausdrücken dass ich bis jetzt kein Device erfolgreich implementiert habe, d.h. es fehlt mir die Erfahrung und die Möglichkeit es mit der Konfig von funktionierenden Devices zu vergleichen.
Was mir aufgefallen ist : in meinem Logfile steht NICHTS von Fehlern oder ausgeführten Commands, ich nehme an dass man die Schaltbefehle des WEB IF ja doch irgendwie sehen sollte.

Was ich bis jetzt gemacht habe :

viel gelesen, aber das meiste behandelt nur FS20 Devices
 
PI installiert (Wheezy, GPIO, VNC)
fhem installiert
fhem.cfg mit dem eingebauten Editor um deine 4 Zeilen Code ergänzt

die 99_Utils mit deinem Code ergänzt, Rechte kontrolliert

nicht viel, also sollte nicht viel falsch sein :)
ich tippe eher darauf dass ich was vergessen habe.

Auf dem WEB IF schauts so aus als ob es einwandfrei funktioniert, aber ich denke der gpio command wird nie gesendet...

Ich bleib aber weiterhin dran, vorerst mal mit weiterlesen und ausprobieren. Der Mut hat mich ja noch nicht verlassen :)

LG

bb10

PS : hab jetzt den Loglevel gefunden und ausprobiert
Im Log steht nun
2013.08.28 23:18:11 3: dummy set Relais_1 off
2013.08.28 23:18:12 3: dummy set Relais_1 on
2013.08.28 23:18:13 3: dummy set Relais_1 off
2013.08.28 23:18:14 3: dummy set Relais_1 on









cornelius fillmore

Also geht es jetzt?

Kann ich mir für meinen 2.Raspi wieder ein Piface holen?
3 x Fhem 5.9 mit RPI

backbone10

Hi,
das kann ich noch nicht bestätigen, ich bin leider nicht weitergekommen.
Ich hatte auch so gut wie keine zeit mehr.Ich werde in den nächsten Wochen den PI wieder aktivieren.

mfg

bb10

betateilchen

Ich bin grade dabei, ein passendes Modul zu schreiben. Schalten der Ausgänge geht schon, im Moment baue ich das Lesen.

Aussehen wird das Ganze derzeit so:


define myPi PIFACE <base>

set myPi 1 1 # schaltet Pin 1 ein
set myPi 3 0 # schaltet Pin 3 aus


Ähnliches wird es dann für get geben, um die Eingänge abzufragen.

Also - noch ein paar Tage Geduld haben :)


(siehe Anhang / see attachement)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen schrieb am Mi, 25 September 2013 21:39Also - noch ein paar Tage Geduld haben :)

Ich denke, heute abend gibts die erste brauchbare Testversion.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

So, jetzt gehst los...

wringPi Tools installieren

Das erfolgt auf der Systemconsole des Raspi


git clone git://git.drogon.net/wiringPi
cd wiringPi
./build



PIFACE Device in fhem definieren

define <name> PIFACE

Das wars schon :)

Befehlssyntax:

1. Einen einzelnen Port (z.B. 3) einschalten

set <name> 3 1

2. Einen einzelnen Port (z.B. 5) ausschalten

set <name> 5 0

3. Alle Ports auf einmal setzen

Dazu brauchen wir eine Bitmaske mit 8 Stellen. Es muss ein Wert zwischen 0 (alle Ports aus) und 255 (alle Ports an) gesendet werden.
Das niedrigstwertige Bit ist Port 1, das höchstwertige ist Port 8

set <name> 0 170

Die Bitmaske aus 170 ergibt 10101010 und diese setzt die Ports 2,4,6,8 auf 1 und 1,3,5,7 auf 0


set <name> 0 0

Schaltet alle Ausgänge aus.

set <name> 0 255

Schaltet alle Ausgänge an.

4. Ports einlesen

Jetzt wirds kompliziert und ich bin müde. Deshalb nur ganz kurz:

get <name> 5

Liest Port 5 mit ausgeschalteten Pullup-Widerständen.

get <name> 15

Liest Port 5 mit eingeschalteten Pullup-Widerständen.

Die Regel ist: Port + 10 = Port mit eingeschalteten Pullup lesen.

get <name> 0

Aktualisiert die Readings aller Input-Ports jeweils ohne und mit Pullup auf einmal.


Anmerkungen:

- Die 4 Taster auf dem Board müssen immer mit eingeschalteten Pullups gelesen werden (also 11-14)
- Die Taster liefern umgekehrte Logik! gedrückt = 0, nicht gedrückt = 1
- Eine Möglichkeit, durch einen gedrückten Taster einen Event zu erzeugen, gibt es derzeit nicht
- Eine regelmäßige automatische Aktualisierung der Portabfrage ist derzeit noch nicht eingebaut, das baue ich vielleicht noch ein

Ich hoffe, ich habe auf die Schnelle nichts vergessen und freue mich über Rückmeldungen.


Achja - falls jemand mein PIFACE haben möchte, ich gebe das gerne ab.
Ich habe das Teil vorgestern nur gekauft, um dieses Modul zu schreiben und brauche das PIFACE selbst nicht.
Bei Interesse bitte email hier über das Forum


-----
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!