Rolladen Steuerung mittels MCP23017 und Taster

Begonnen von IPPhoner2b, 09 November 2014, 15:27:10

Vorheriges Thema - Nächstes Thema

IPPhoner2b

Hallo zusammen,
ich hoffe ihr könnt mir weiterhelfen.
Durch den User @klausw wurde ein Plugin geschrieben, mit dessen Hilfe man einen I2C MCP23017 mit 16 Ein/Ausgängen an den Raspi anklemmen und ansteuern kann.
http://forum.fhem.de/index.php/topic,23164.0.html

Das klappt auch soweit, allerdings braucht ich jetzt eure Hilfe bzgl der Programmierung.

Vorhandenes:
- Schalter für Rollo als Eingang PortB0 und PortB1 am MCP (Schalter können in Hoch oder Runterstellung einrasten!!)
- Ausgang für Rollo PortA0 und PortA1

Folgende Dinge sollen berücksichtigt werden:
- Hoch und Runterfahren über Sonnenauf- und Untergangstimer
- Die Schalter sollen abgefragt werden, wenn z.B. Taste "Hoch" (Eingang PortB0) eingedrückt ist, darf das Rollo nicht runter fahren. (Terrassentür)
- Wenn der jeweilige Ausgang gesetzt wird, muss der andere vorher deaktiviert werden, und dazwischen eine Pause von 0,5 sek sein.
- Der Ausgang soll nach 30 sek wieder deaktiviert werden, um das Rollo wieder frei zu geben.

Klausw hat mir schon einen Tip gegeben, allerdings komme ich damit nicht so gut klar
define act_on_rolladentimer notify rolladentimer {\
  if ("$EVENT" eq "down") {\
    my $svar = ReadingsVal("Rollladenschalter","state",0);;\
    if ($svar ne "up") {fhem "set Rolladen down";;}\
  }\
}


Könnt ihr mir da weiterhelfen? Bin was das angeht scheinbar sehr Begriffsstuzig  ::) :o

Vielen Dank im Voraus.

klausw

Zitat von: IPPhoner2b am 09 November 2014, 15:27:10
Könnt ihr mir da weiterhelfen? Bin was das angeht scheinbar sehr Begriffsstuzig  ::) :o

meistens liegt es ja an Kleinigkeiten wenn man was nicht versteht  8)
Woran hängt es denn bei dem Code?


Ich habe nochmal nachgedacht (muss nicht stimmen ;)):
Pro Rolladen benötigst Du einen Dummy und ein dazugehöriges notify:

define Rolladen1 dummy
attr Rolladen1 room Rolladen
attr Rolladen1 setList hoch:noArg runter:noArg stop:noArg
attr Rolladen1 webCmd hoch:stop:runter
define act_on_Rolladen1 notify Rolladen1 {\
if ("%" eq "runter") {\
my $svar = ReadingsVal("Pin11","state",0);;\
    if ($svar ne "on") {\
fhem "set Pin12 off";;\
    fhem "define roll_down at +00:00:01 set Pin16 on-for-timer 30";;\
    fhem "setstate Rolladen1 runterfahren";;\
    fhem "define roll_clos at +00:00:31 setstate Rolladen1 geschlossen";;\
}\
} elsif ("%" eq "hoch") {\
fhem "set Pin16 off";;\
    fhem "define roll_hoch at +00:00:01 set Pin12 on-for-timer 30";;\
fhem "setstate Rolladen1 hochfahren";;\
    fhem "define roll_oben at +00:00:31 setstate Rolladen1 geoeffnet";;\
} elsif ("%" eq "stop") {\
fhem "set Pin16 off";;\
    fhem "set Pin12 off";;\
    fhem "setstate Rolladen1 gestoppt";;\
} \
}


Pin16 ist das Relais für runter
Pin12 ist das Relais für hoch
Pin11 ist der Schalterkontakt für hoch
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hallo Klaus,

Ich danke dir schon mal wieder vorab, für die Hilfe, die du mir entgegen bringst.  Wenn ich Zeit habe, werde ich mich auch direkt darum kümmern, und wenn das irgendwann einmal läuft, sagst mir, wie ich mich bei dir mal bedanken kann  ::) ;)

IPPhoner2b

#3
Hallo Klaus,

schonmal Besten Dank vorab, also nach ein bissl umdenken hat es geklappt, weil eben leider ja die Ausgänge vom MCP Invers angesteuert werden, das ist ja immer das üble, man stellt ihn auf OFF, und die LED geht an.  ;D

Wenn ich das richtig deute, ist diese Sequenz nur Zuständig für das WebIf, oder?
Also müsste ich noch einen Befehl für den Schalter, und einen Befehl für die Zeitschaltung setzen, oder?
Kann man den "Rolladen1" Befehl denn für alle 3 Szenarien verwenden, oder muss ich für 1 Rollo dann mit 3 unterschiedlichen Namen arbeiten?
Also Rollo1.Web, Rollo1.Schalter und Rollo1.Zeit?


Oder könnte man in diesem Skript noch ansetzen, bzgl der Zeitschaltung und der Schalterüberwachung?

Achja, noch eine kleinigkeit, wenn der Rolladen hochgefahren ist, steht im Web-If immernoch "hochfahren".
Wenn ich den Browser aktualisiere steht "hochgefahren". Wie konnte man das nochmal einstellen?

Achja, bevor ich es vergesse, habe es mit deiner neusten MCP Version durchgeführt.

Hier nochmal das umgeänderte, dann passt es für den MCP mit der Schalterüberwachung
define Rolladen1 dummy
attr Rolladen1 room Rolladen
attr Rolladen1 setList hoch:noArg runter:noArg stop:noArg
attr Rolladen1 webCmd hoch:stop:runter
define act_on_Rolladen1 notify Rolladen1 {\
if ("%" eq "runter") {\
my $svar = ReadingsVal("Pin11","state","on");;\
    if ($svar ne "off") {\
fhem "set Pin12 on";;\
    fhem "define roll_down at +00:00:01 set Pin16 off-for-timer 5";;\
    fhem "setstate Rolladen1 runterfahren";;\
    fhem "define roll_clos at +00:00:06 setstate Rolladen1 geschlossen";;\
}\
} elsif ("%" eq "hoch") {\
fhem "set Pin16 on";;\
    fhem "define roll_hoch at +00:00:01 set Pin12 off-for-timer 5";;\
fhem "setstate Rolladen1 hochfahren";;\
    fhem "define roll_oben at +00:00:06 setstate Rolladen1 geoeffnet";;\
} elsif ("%" eq "stop") {\
fhem "set Pin16 on";;\
    fhem "set Pin12 on";;\
    fhem "setstate Rolladen1 gestoppt";;\
} \
}

klausw

#4
Zitat von: IPPhoner2b am 11 November 2014, 20:16:09
schonmal Besten Dank vorab, also nach ein bissl umdenken hat es geklappt, weil eben leider ja die Ausgänge vom MCP Invers angesteuert werden, das ist ja immer das üble, man stellt ihn auf OFF, und die LED geht an.  ;D
nutzt Du nicht schon die inverse Logik? Die sollte beide zustände doch vertauschen.

Zitat von: IPPhoner2b am 11 November 2014, 20:16:09
Wenn ich das richtig deute, ist diese Sequenz nur Zuständig für das WebIf, oder?
Also müsste ich noch einen Befehl für den Schalter, und einen Befehl für die Zeitschaltung setzen, oder?
Kann man den "Rolladen1" Befehl denn für alle 3 Szenarien verwenden, oder muss ich für 1 Rollo dann mit 3 unterschiedlichen Namen arbeiten?
Also Rollo1.Web, Rollo1.Schalter und Rollo1.Zeit?
Für die Zeitschaltung musst Du ein "at" definieren, das dann ein "set Rolladen1 hoch" usw. auslöst
Für die Schalterüberwachung kannst du ein "notify" für Deinen mcp_20 schreiben (der "hoch" Eingang muss dann Pin11 aus meinem Beispiel sein).
bei Pin11 musst du sowas wie ReadingsVal("mcp_20","PortB1","on") haben
Ich würde aber einen readingsproxy anlegen. Dann hast du den Schalter auch schön in der Weboberfläche visualisiert und das notify dafür ist recht übersichtlich.
In meinem Dummyscriptbeispiel geht das nicht. Die Funktionen müssen aufgeteilt werden
Zitat von: IPPhoner2b am 11 November 2014, 20:16:09

Achja, noch eine kleinigkeit, wenn der Rolladen hochgefahren ist, steht im Web-If immernoch "hochfahren".
Wenn ich den Browser aktualisiere steht "hochgefahren". Wie konnte man das nochmal einstellen?


das muss man setreadings nehmen...mein fehler

Rolladen1 {
    fhem ("delete roll_down") if (Value("roll_down") ne "");
    fhem ("delete roll_clos") if (Value("roll_clos") ne "");
    fhem ("delete roll_down") if (Value("roll_down") ne "");
    fhem ("delete roll_clos") if (Value("roll_clos") ne "");
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("Pin11","state",0);
    if ($svar eq "on") {
fhem "set Pin12 off";
    fhem "define roll_down at +00:00:01 set Pin16 on-for-timer 10";
    fhem "setreading Rolladen1 state runterfahren";
    fhem "define roll_clos at +00:00:11 setreading Rolladen1 state geschlossen";
}
} elsif ("$EVENT" eq "hoch") {
    fhem "set Pin16 off";
    fhem "define roll_hoch at +00:00:01 set Pin12 on-for-timer 10";
    fhem "setreading Rolladen1 state hochfahren";
    fhem "define roll_oben at +00:00:11 setreading Rolladen1 state geoeffnet";
} elsif ("$EVENT" eq "stop") {
    fhem "set Pin16 off";
    fhem "set Pin12 off";
    fhem "setreading Rolladen1 state gestoppt";
}
}

So wird der STATE aktualisiert.
Ausserdem werden die Timer vorher gelöscht..sonst kommen die sich in die Quere
Hast du readingsproxy angelegt die Pinxx heissen?
So allein funktionert das Beispiel ja nicht.
Auch on-for-timer geht nicht mit dem MCP Modul

Edit:
Anmerkung von Puschel umgesetzt.
Danke für den Hinweis, Copy und Paste von alten Codeschnipseln ist halt nur bedingt hilfreich  ::)
@IPPhoner2b:
Wenn Du mehrere Rolläden steuern willst, kannst du das Notify auch so abändern, das es für alle Rolläden gilt:
Rolladen1 -> Rolladen.*
Die Ausgänge müssen umbenannt werden: z.B. Pin12 -> Rolladen1hoch
Im Notify sieht das dann so aus:
fhem "set Pin12 on"; -> fhem "set ".$NAME."hoch off";
Und nicht zu vergessen, die Timer:
fhem ("delete roll_down") if (Value("roll_down") ne ""); -> fhem ("delete ".$NAME."_down") if (Value("".$NAME."_down") ne "");
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Puschel74

Hallo,

und auch hier der kurze Einwurf:
% gegen $EVENT und @ gegen $NAME zu tauschen.
NOCH funktioniert @ und % aber nur Rudi weiß bis wann er das ausbaut.

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.

IPPhoner2b

Hallo ihr beiden,
Danke für die Tatkräftige Unterstützung,

habe den geändert Code übernommen, allerdings habe ich eine Frage, ich muss bei allen Zeilen entweder ein ";\" oder ein ";" hinzufügen, sonst klappte das nicht. In deinem ersten Beispiel hattest du die ja auch drin, wurden die nur vergessen, oder gibt es einen Grund, warum es nicht klappte  :o ;)

Die Benennungen habe ich natürlich dementsprechend angepasst.

Das mit dem Status wird jetzt richtig übernommen, wie könnte ich denn folgendes Einsetzen?
Wenn der Schalter gedrückt ist, darf das Rollo ja nicht fahren, das klappt ja soweit auch, allerdings schreibt er ja runterfahren, da wäre gut, wenn der Text kommt "Schalter betätigt" oder so.

Habe die Schalter jetzt auch mit reingenommen, dass dann das Rollo fährt, und läuft alles über deinen Dummy, also das klappt schonmal.
Alle Rolläden wollte ich per Zeitschaltung eh nicht gleichzeitig fahren lassen, sondern so um ein paar Sekunden versetzt.

So sieht es momentan aus mit den Zuordnungen: (Den Code für die Ein und Ausgänge habe ich von LinusD übernommen (Glaube, er war es *g*)
Könnt ihr euch den Teil für die Zeitschaltung nochmal ansehen, ob das so richtig ist? (Meckern tut er nicht, aber ist ja Zeitlich immer so eine Sache, wenn man das nicht kennt *g*)

Schaut mal drüber, für Hilfe bin ich immer dankbar, habe mir nämlich jetzt aus mehreren Ecken was zusammengebastelt, und da kann ja immer Verbesserungspotential sein. ;D
###Sensoren (Input)####

#--Bank-B--#
#(S)chalter (K)üchenrollo (li)nks (H)och          ###(S K LI H)###
define sklih readingsProxy mcp_20:PortB0
attr sklih event-on-change-reading state
attr sklih group InputPorts
attr sklih valueFn {($VALUE eq "on")?"off":"on"}

#(S)chalter (K)üchenrollo (li)nks (R)unter        ###(S K LI R)###
define sklir readingsProxy mcp_20:PortB1
attr sklir event-on-change-reading state
attr sklir group InputPorts
attr sklir valueFn {($VALUE eq "on")?"off":"on"}

#(S)chalter (K)üchenrollo (re)chts (H)och         ###(S K RE H)###
define skreh readingsProxy mcp_20:PortB2
attr skreh event-on-change-reading state
attr skreh group InputPorts
attr skreh valueFn {($VALUE eq "on")?"off":"on"}

#(S)chalter (K)üchenrollo (re)chts (R)unter       ###(S K RE R)###
define skrer readingsProxy mcp_20:PortB3
attr skrer event-on-change-reading state
attr skrer group InputPorts
attr skrer valueFn {($VALUE eq "on")?"off":"on"}

####Aktoren (Output)####
#--Bank-A--#

#(A)usgang (K)üchenrollo (li)nks (H)och         ###(A K LI H)###  PORT A0
define aklih readingsProxy mcp_20:PortA0
attr aklih alias A0 Rollo Küche links Hoch
attr aklih eventMap on:aus off:an
attr aklih group OutputPorts
attr aklih setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr aklih setList off on
attr aklih valueFn {($VALUE eq "on")?"off":"on"}

#(A)usgang (K)üchenrollo (li)nks (R)unter       ###(A K LI R)###  PORT A1
define aklir readingsProxy mcp_20:PortA1
attr aklir alias A1 Rollo Küche links Runter
attr aklir eventMap on:aus off:an
attr aklir group OutputPorts
attr aklir setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr aklir setList off on
attr aklir valueFn {($VALUE eq "on")?"off":"on"}

#(A)usgang (K)üchenrollo (re)chts (H)och         ###(A K RE H)###  PORT A2
define akreh readingsProxy mcp_20:PortA2
attr akreh alias A2 Rollo Küche rechts Hoch
attr akreh eventMap on:aus off:an
attr akreh group OutputPorts
attr akreh setFn {($CMD eq "on")?"PortA2 off":"PortA2 on"}
attr akreh setList off on
attr akreh valueFn {($VALUE eq "on")?"off":"on"}

#(A)usgang (K)üchenrollo (re)chts (R)unter       ###(A K RE R)###  PORT A3
define akrer readingsProxy mcp_20:PortA3
attr akrer alias A3 Rollo Küche rechts Runter
attr akrer eventMap on:aus off:an
attr akrer group OutputPorts
attr akrer setFn {($CMD eq "on")?"PortA3 off":"PortA3 on"}
attr akrer setList off on
attr akrer valueFn {($VALUE eq "on")?"off":"on"}
#attr akrer room Küche

######### Rollade per Schalter fahren
define aklihNotify notify sklih set Rolladen1 hoch
define aklirNotify notify sklir set Rolladen1 runter

######### Rollade rauf
define Rolladen1_auf_WE at *08:00 {if ($we) {fhem("set Rolladen1 hoch")}}
define Rolladen1_auf_Woche at *07:00 {if (!$we){fhem("set Rolladen1 hoch")}}

######### Rollade runter
define Rolladen1_ab at *{sunset("HORIZON=-6",300,"17:00","22:00")} set Rolladen1 runter

define Rolladen1 dummy
attr Rolladen1 room Rolladen
attr Rolladen1 setList hoch:noArg runter:noArg stop:noArg
attr Rolladen1 webCmd hoch:stop:runter
define act_on_Rolladen1 notify Rolladen1 {\
    fhem ("delete roll_down") if (Value("roll_down") ne "");;\
    fhem ("delete roll_clos") if (Value("roll_clos") ne "");;\
    fhem ("delete roll_down") if (Value("roll_down") ne "");;\
    fhem ("delete roll_clos") if (Value("roll_clos") ne "");;\
if ("$EVENT" eq "runter") {\
my $svar = ReadingsVal("sklih","state","off");;\
    if ($svar eq "on") {\
fhem "set aklih aus";;\
    fhem "define roll_down at +00:00:01 set aklir off-for-timer 5";;\
    fhem "setreading Rolladen1 state runterfahren";;\
    fhem "define roll_clos at +00:00:06 setreading Rolladen1 state geschlossen";;\
}\
} elsif ("$EVENT" eq "hoch") {\
    fhem "set aklir aus";;\
    fhem "define roll_hoch at +00:00:01 set aklih off-for-timer 5";;\
    fhem "setreading Rolladen1 state hochfahren";;\
    fhem "define roll_oben at +00:00:06 setreading Rolladen1 state geoeffnet";;\
} elsif ("$EVENT" eq "stop") {\
    fhem "set aklir aus";;\
    fhem "set aklih aus";;\
    fhem "setreading Rolladen1 state gestoppt";;\
} \
}

klausw

In der cfg Datei bedeutet \, das es auf der nächsten Zeile mit dem Code weitergeht.
Das zweite ; "escaped" das Erste. Sonst wird es falsch interpretiert.
Wenn Du den Code auf der Seite des notify (findest du unter unsorted) under Def editierts hast du beides nicht.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hui,

und ich dachte schon, ich bin jetzt total durch den Wind, weil ich von deinem letzten Abschnitt nichts mehr verstanden habe, habs dann aber im WebIf gefunden, und hast recht, da sieht der Text einfacher aus *g*

Hast du denn noch einen Tipp für mich bzgl. der Meldung, dass der Schalter betätigt ist  ::) ;D

klausw

Zitat von: IPPhoner2b am 16 November 2014, 12:44:37
Hast du denn noch einen Tipp für mich bzgl. der Meldung, dass der Schalter betätigt ist  ::) ;D
Wenn du mir genau sagst, was du damit meinst.
Der Dummystate wird doch aktualisiert?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Ja das mit dem aktualisieren klappt, allerdings, wenn der Schalter belegt ist, und er nicht fahren "darf" und ich klicke dann im WebIf den Button "Runter" an, zeigt er "runterfahren" an, schaltet die Ausgänge aber nicht "scharf"
Und diese Meldung bleibt solange, bis ich eine andere Taste drücke.

Melde mich nachher nochmal, muss jetzt kurz weg

klausw

Zitat von: IPPhoner2b am 16 November 2014, 12:53:06
Ja das mit dem aktualisieren klappt, allerdings, wenn der Schalter belegt ist, und er nicht fahren "darf" und ich klicke dann im WebIf den Button "Runter" an, zeigt er "runterfahren" an, schaltet die Ausgänge aber nicht "scharf"
Und diese Meldung bleibt solange, bis ich eine andere Taste drücke.
Ah stimmt....
Du musst nur eine else Bedingung an die Schalterabfrage anhängen:


...
    if ($svar eq "on") {\
fhem "set aklih aus";;\
    fhem "define roll_down at +00:00:01 set aklir off-for-timer 5";;\
    fhem "setreading Rolladen1 state runterfahren";;\
    fhem "define roll_clos at +00:00:06 setreading Rolladen1 state geschlossen";;\
    }
    else {\
    fhem "setreading Rolladen1 state Balkontür offen";;\
    }\
...


Oder willst du ein separates Dummy Device haben?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Ne, so wie du das geschrieben hast, ist das wirklich absolut ausreichend für mich, und klappt soweit auch wunderbar.

Jetzt habe ich noch ein kleines Problem festgestellt, und zwar, wenn ich mit dem Schalter das Rollo hochfahre, geht ja nach xx sekunden der Ausgang automatisch zurück, soweit alles wie gewünscht.

Wenn ich dann den Schalter aber ausschalte, gibt es für das Rollo nochmals das Signal zum hochfahren. Habe schon getestet, den Interrupt von both auf rising zu stellen, aber das hat scheinbar keinen Erfolg gebracht.

So sieht es noch in der Config für den Chip aus:
###MCP23017-0x20###
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 InterruptOut connected_active-low
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 group MCP23017
attr mcp_20 invert_input B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off



###Interrupt A&B####
define Interrupt RPI_GPIO 14
attr Interrupt active_low yes
attr Interrupt direction input
attr Interrupt group MCP23017
#attr Interrupt interrupt both
attr Interrupt interrupt rising
attr Interrupt userReadings test {fhem ("get mcp_20")}

klausw

Zitat von: IPPhoner2b am 16 November 2014, 17:02:50
Jetzt habe ich noch ein kleines Problem festgestellt, und zwar, wenn ich mit dem Schalter das Rollo hochfahre, geht ja nach xx sekunden der Ausgang automatisch zurück, soweit alles wie gewünscht.

Wenn ich dann den Schalter aber ausschalte, gibt es für das Rollo nochmals das Signal zum hochfahren. Habe schon getestet, den Interrupt von both auf rising zu stellen, aber das hat scheinbar keinen Erfolg gebracht.
Der Taster prellt sicher, also wirst du beim Schalten immer einen Interrupt sehen.
Du müsstest in define aklihNotify notify sklih eine Abfrage des Pinstatus einbauen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Super, danke hat geklappt,


Jetzt habe ich mit "2 Rollos" mal etwas rumgespielt, und habe festgestellt, dass in bestimmten Konstellationen beim umschalten auf einmal für ein Rollo beide Leds angehen, was ja fatal wäre *g*

Denke mal, dass es daran liegt, dass ich den kompletten Block mit den Timern nur kopiert habe, und eben die spezifischen Bezeichnungen angepasst habe.

Muss ich die "Timer" also roll_down roll_close irgendwie abändern?

Habe jedenfalls grade nen kleinen Schönheitsfehler gefunden, der mir ohne die Spielerei nicht aufgefallen wäre,

Bei den Timer, die gelöscht werden, steht 2x roll_down und 2x roll_clos, aber nichts von roll_hoch und roll_oben.

Rolladen1 {
    fhem ("delete roll_down") if (Value("roll_down") ne "");
    fhem ("delete roll_clos") if (Value("roll_clos") ne "");
    fhem ("delete roll_down") if (Value("roll_down") ne "");
    fhem ("delete roll_clos") if (Value("roll_clos") ne "");
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("Pin11","state",0);
    if ($svar eq "on") {
fhem "set Pin12 off";


Aber sollte ich besser für jedes Rollo eigenständige Timerbezeichnungen nehmen?

IPPhoner2b

#15
So, habe jetzt mal für jedes Rollo eigene Timer benannt, allerdings hat es an dem ganzen nichts geändert.
Ich muss aber dazusagen, dass ich die Tasten natürlich mehrmals gedrückt habe, und es im Normalfall "eigentlich" nicht passieren sollte, allerdings kann es ja sein, dass man grade, wenn das Rollo losfährt auf die andere Seite drückt oder so, und dann knallts auf einmal, wäre ja nicht so wünschenswert.

Habe mal mit Verbose 5 ein Log erstellt, und der letzte Eintrag ist der, an dem die beiden LEDs AKLIH und AKLIR zusammen leuchten, und damit das Rollo etwas überfordern.

Hier erstmal die Config für die beiden Rollos:
###Sensoren (Input)####

#--Bank-B--#
#(S)chalter (K)üchenrollo (li)nks (H)och          ###(S K LI H)###
define sklih readingsProxy mcp_20:PortB0
attr sklih alias B0 Schalter Küchenrollo Links Hoch
attr sklih event-on-change-reading state
attr sklih group InputPorts
attr sklih valueFn {($VALUE eq "on")?"off":"on"}

#(S)chalter (K)üchenrollo (li)nks (R)unter        ###(S K LI R)###
define sklir readingsProxy mcp_20:PortB1
attr sklir alias B1 Schalter Küchenrollo Links Runter
attr sklir event-on-change-reading state
attr sklir group InputPorts
attr sklir valueFn {($VALUE eq "on")?"off":"on"}

#(S)chalter (K)üchenrollo (re)chts (H)och         ###(S K RE H)###
define skreh readingsProxy mcp_20:PortB2
attr skreh alias B2 Schalter Küchenrollo Rechts Hoch
attr skreh event-on-change-reading state
attr skreh group InputPorts
attr skreh valueFn {($VALUE eq "on")?"off":"on"}

#(S)chalter (K)üchenrollo (re)chts (R)unter       ###(S K RE R)###
define skrer readingsProxy mcp_20:PortB3
attr skrer alias B3 Schalter Küchenrollo Rechts Runter
attr skrer event-on-change-reading state
attr skrer group InputPorts
attr skrer valueFn {($VALUE eq "on")?"off":"on"}

####Aktoren (Output)####
#--Bank-A--#

#(A)usgang (K)üchenrollo (li)nks (H)och         ###(A K LI H)###  PORT A0
define aklih readingsProxy mcp_20:PortA0
attr aklih alias A0 Rollo Küche links Hoch
attr aklih eventMap on:aus off:an
attr aklih group OutputPorts
attr aklih setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr aklih setList off on
attr aklih valueFn {($VALUE eq "on")?"off":"on"}

#(A)usgang (K)üchenrollo (li)nks (R)unter       ###(A K LI R)###  PORT A1
define aklir readingsProxy mcp_20:PortA1
attr aklir alias A1 Rollo Küche links Runter
attr aklir eventMap on:aus off:an
attr aklir group OutputPorts
attr aklir setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr aklir setList off on
attr aklir valueFn {($VALUE eq "on")?"off":"on"}

#(A)usgang (K)üchenrollo (re)chts (H)och         ###(A K RE H)###  PORT A2
define akreh readingsProxy mcp_20:PortA2
attr akreh alias A2 Rollo Küche rechts Hoch
attr akreh eventMap on:aus off:an
attr akreh group OutputPorts
attr akreh setFn {($CMD eq "on")?"PortA2 off":"PortA2 on"}
attr akreh setList off on
attr akreh valueFn {($VALUE eq "on")?"off":"on"}

#(A)usgang (K)üchenrollo (re)chts (R)unter       ###(A K RE R)###  PORT A3
define akrer readingsProxy mcp_20:PortA3
attr akrer alias A3 Rollo Küche rechts Runter
attr akrer eventMap on:aus off:an
attr akrer group OutputPorts
attr akrer setFn {($CMD eq "on")?"PortA3 off":"PortA3 on"}
attr akrer setList off on
attr akrer valueFn {($VALUE eq "on")?"off":"on"}
#attr akrer room Küche

######### Rollade KÜCHE LINKS per Schalter fahren
define aklihNotify notify sklih:off set Rollokli hoch
define aklirNotify notify sklir:off set Rollokli runter

######### Rollade KÜCHE LINKS rauf
define Rollokli_auf_WE at *08:00 {if ($we) {fhem("set Rollokli hoch")}}
define Rollokli_auf_Woche at *07:00 {if (!$we){fhem("set Rollokli hoch")}}

######### Rollade KÜCHE LINKS runter
define Rollokli_ab at *{sunset("HORIZON=0",300,"17:00","22:00")} set Rollokli runter
attr Rollokli_ab alias Rollo Küche Links Runterfahren um
attr Rollokli_ab room Uhrzeiten

define Rollokli dummy
attr Rollokli room Rolladen
attr Rollokli alias Rollo Küche links
attr Rollokli setList hoch:noArg runter:noArg stop:noArg
attr Rollokli webCmd hoch:stop:runter
define act_on_Rollokli notify Rollokli {\
    fhem ("delete kli_down") if (Value("kli_down") ne "");;\
    fhem ("delete kli_clos") if (Value("kli_clos") ne "");;\
    fhem ("delete kli_hoch") if (Value("kli_hoch") ne "");;\
    fhem ("delete kli_oben") if (Value("kli_oben") ne "");;\
if ("$EVENT" eq "runter") {\
my $svar = ReadingsVal("sklih","state","off");;\
    if ($svar eq "on") {\
fhem "set aklih aus";;\
    fhem "define kli_down at +00:00:01 set aklir off-for-timer 5";;\
    fhem "setreading Rollokli state runterfahren";;\
    fhem "define kli_clos at +00:00:06 setreading Rollokli state geschlossen";;\
    }\
    else {\
    fhem "setreading Rollokli state Schalter betätigt";;\
}\
} elsif ("$EVENT" eq "hoch") {\
    fhem "set aklir aus";;\
fhem "define kli_hoch at +00:00:01 set aklih off-for-timer 5";;\
fhem "setreading Rollokli state hochfahren";;\
fhem "define kli_oben at +00:00:06 setreading Rollokli state geöffnet";;\
} elsif ("$EVENT" eq "stop") {\
    fhem "set aklir aus";;\
    fhem "set aklih aus";;\
    fhem "setreading Rollokli state gestoppt";;\
} \
}


######### Rollade KÜCHE RECHTS per Schalter fahren
define akrehNotify notify skreh:off set Rollokre hoch
define akrerNotify notify skrer:off set Rollokre runter

######### Rollade KÜCHE RECHTS rauf
define Rollokre_auf_WE at *08:00 {if ($we) {fhem("set Rollokre hoch")}}
define Rollokre_auf_Woche at *07:00 {if (!$we){fhem("set Rollokre hoch")}}

######### Rollade KÜCHE RECHTS runter
define Rollokre_ab at *{sunset("HORIZON=0",305,"17:00","22:00")} set Rollokre runter
attr Rollokre_ab alias Rollo Küche Rechts Runterfahren um
attr Rollokre_ab room Uhrzeiten

define Rollokre dummy
attr Rollokre room Rolladen
attr Rollokre alias Rollo Küche rechts
attr Rollokre setList hoch:noArg runter:noArg stop:noArg
attr Rollokre webCmd hoch:stop:runter
define act_on_Rollokre notify Rollokre {\
    fhem ("delete kre_down") if (Value("kre_down") ne "");;\
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");;\
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");;\
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");;\
if ("$EVENT" eq "runter") {\
my $svar = ReadingsVal("skreh","state","off");;\
    if ($svar eq "on") {\
fhem "set akreh aus";;\
    fhem "define kre_down at +00:00:01 set akrer off-for-timer 5";;\
    fhem "setreading Rollokre state runterfahren";;\
    fhem "define kre_clos at +00:00:06 setreading Rollokre state geschlossen";;\
    }\
    else {\
    fhem "setreading Rollokre state Schalter betätigt";;\
}\
} elsif ("$EVENT" eq "hoch") {\
    fhem "set akrer aus";;\
fhem "define kre_hoch at +00:00:01 set akreh off-for-timer 5";;\
fhem "setreading Rollokre state hochfahren";;\
fhem "define kre_oben at +00:00:06 setreading Rollokre state geöffnet";;\
} elsif ("$EVENT" eq "stop") {\
    fhem "set akrer aus";;\
    fhem "set akreh aus";;\
    fhem "setreading Rollokre state gestoppt";;\
} \
}


Hier mal das Log, ist allerdings recht lang, kann man das auch etwas kürzer und "verständlicher" machen  :o ::)
Jedenfalls mit dem Befehl um 18:23:44 gingen beide LEDs an

Hier mal nur die letzten Sekunden, der Rest wurde leider nicht angezeigt.
2014.11.17 18:23:38 5: Cmd: >delete kli_oben<
2014.11.17 18:23:38 5: Triggering global (1 changes)
2014.11.17 18:23:38 5: Notify loop for global DELETED kli_oben
2014.11.17 18:23:38 5: Triggering aflh (1 changes)
2014.11.17 18:23:38 5: Notify loop for aflh aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflh aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflh state: on -> state: on
2014.11.17 18:23:38 5: Triggering aflr (1 changes)
2014.11.17 18:23:38 5: Notify loop for aflr aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflr aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflr state: on -> state: on
2014.11.17 18:23:38 5: Triggering agwch (1 changes)
2014.11.17 18:23:38 5: Notify loop for agwch aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwch aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwch state: on -> state: on
2014.11.17 18:23:38 5: Triggering agwcr (1 changes)
2014.11.17 18:23:38 5: Notify loop for agwcr aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwcr aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwcr state: on -> state: on
2014.11.17 18:23:38 5: Triggering aklih (1 changes)
2014.11.17 18:23:38 5: Notify loop for aklih an
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih an -> an
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih state: off -> state: off
2014.11.17 18:23:38 5: Triggering aklir (1 changes)
2014.11.17 18:23:38 5: Notify loop for aklir aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklir aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklir state: on -> state: on
2014.11.17 18:23:38 5: Triggering akreh (1 changes)
2014.11.17 18:23:38 5: Notify loop for akreh an
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh an -> an
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh state: off -> state: off
2014.11.17 18:23:38 5: Triggering akrer (1 changes)
2014.11.17 18:23:38 5: Notify loop for akrer aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akrer aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akrer state: on -> state: on
2014.11.17 18:23:38 5: Triggering sklir (1 changes)
2014.11.17 18:23:38 5: Cmd: >set aklih aus<
2014.11.17 18:23:38 4: aklih: set hash->{DEVICE} PortA0 off
2014.11.17 18:23:38 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 4|i2caddress: 32
2014.11.17 18:23:38 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:38 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 4|i2caddress: 32
2014.11.17 18:23:38 5: chip: HWaccess byteweise schreiben, Reg: 0x12 Inh: 0x04, laenge: 2
2014.11.17 18:23:38 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 4
2014.11.17 18:23:38 5: mcp_20 UpdReadings Register: 18, Inhalt: 4
2014.11.17 18:23:38 5: Triggering mcp_20 (2 changes)
2014.11.17 18:23:38 5: Triggering mcp_20 (3 changes)
2014.11.17 18:23:38 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 2|i2caddress: 32
2014.11.17 18:23:38 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:38 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 2|i2caddress: 32
2014.11.17 18:23:38 5: chip: HWaccess byteweise schreiben, Reg: 0x13 Inh: 0x02, laenge: 2
2014.11.17 18:23:38 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 2
2014.11.17 18:23:38 5: mcp_20 UpdReadings Register: 19, Inhalt: 2
2014.11.17 18:23:38 5: Triggering mcp_20 (3 changes)
2014.11.17 18:23:38 5: Triggering mcp_20 (4 changes)
2014.11.17 18:23:38 5: Cmd: >define kli_down at +00:00:01 set aklir off-for-timer 5<
2014.11.17 18:23:38 5: Triggering global (1 changes)
2014.11.17 18:23:38 5: Notify loop for global DEFINED kli_down
2014.11.17 18:23:38 5: Triggering aflh (1 changes)
2014.11.17 18:23:38 5: Notify loop for aflh aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflh aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflh state: on -> state: on
2014.11.17 18:23:38 5: Triggering aflr (1 changes)
2014.11.17 18:23:38 5: Notify loop for aflr aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflr aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflr state: on -> state: on
2014.11.17 18:23:38 5: Triggering agwch (1 changes)
2014.11.17 18:23:38 5: Notify loop for agwch aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwch aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwch state: on -> state: on
2014.11.17 18:23:38 5: Triggering agwcr (1 changes)
2014.11.17 18:23:38 5: Notify loop for agwcr aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwcr aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwcr state: on -> state: on
2014.11.17 18:23:38 5: Triggering aklih (1 changes)
2014.11.17 18:23:38 5: Notify loop for aklih aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih state: on -> state: on
2014.11.17 18:23:38 5: Triggering aklir (1 changes)
2014.11.17 18:23:38 5: Notify loop for aklir aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklir aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklir state: on -> state: on
2014.11.17 18:23:38 5: Triggering akreh (1 changes)
2014.11.17 18:23:38 5: Notify loop for akreh an
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh an -> an
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh state: off -> state: off
2014.11.17 18:23:38 5: Triggering akrer (1 changes)
2014.11.17 18:23:38 5: Notify loop for akrer aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akrer aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akrer state: on -> state: on
2014.11.17 18:23:38 5: Triggering sklir (1 changes)
2014.11.17 18:23:38 5: Cmd: >setreading Rollokli state runterfahren<
2014.11.17 18:23:38 5: Triggering Rollokli (2 changes)
2014.11.17 18:23:38 5: Cmd: >define kli_clos at +00:00:06 setreading Rollokli state geschlossen<
2014.11.17 18:23:38 5: Triggering global (1 changes)
2014.11.17 18:23:38 5: Notify loop for global DEFINED kli_clos
2014.11.17 18:23:38 5: Triggering aflh (1 changes)
2014.11.17 18:23:38 5: Notify loop for aflh aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflh aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflh state: on -> state: on
2014.11.17 18:23:38 5: Triggering aflr (1 changes)
2014.11.17 18:23:38 5: Notify loop for aflr aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflr aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aflr state: on -> state: on
2014.11.17 18:23:38 5: Triggering agwch (1 changes)
2014.11.17 18:23:38 5: Notify loop for agwch aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwch aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwch state: on -> state: on
2014.11.17 18:23:38 5: Triggering agwcr (1 changes)
2014.11.17 18:23:38 5: Notify loop for agwcr aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwcr aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy agwcr state: on -> state: on
2014.11.17 18:23:38 5: Triggering aklih (1 changes)
2014.11.17 18:23:38 5: Notify loop for aklih aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih state: on -> state: on
2014.11.17 18:23:38 5: Triggering aklir (1 changes)
2014.11.17 18:23:38 5: Notify loop for aklir aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklir aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklir state: on -> state: on
2014.11.17 18:23:38 5: Triggering akreh (1 changes)
2014.11.17 18:23:38 5: Notify loop for akreh an
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh an -> an
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh state: off -> state: off
2014.11.17 18:23:38 5: Triggering akrer (1 changes)
2014.11.17 18:23:38 5: Notify loop for akrer aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akrer aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akrer state: on -> state: on
2014.11.17 18:23:38 5: Triggering sklir (1 changes)
2014.11.17 18:23:38 4: eventTypes: dummy Rollokli runter -> runter
2014.11.17 18:23:38 4: eventTypes: dummy Rollokli runterfahren -> runterfahren
2014.11.17 18:23:38 4: eventTypes: dummy Rollokli state: runterfahren -> state: runterfahren
2014.11.17 18:23:38 4: eventTypes: readingsProxy sklir off -> off
2014.11.17 18:23:38 4: eventTypes: readingsProxy sklir state: off -> state: off
2014.11.17 18:23:38 5: mcp_20 UpdReadings Register: 18, Inhalt: 5
2014.11.17 18:23:38 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:38 5: Notify loop for mcp_20 PortA0: on
2014.11.17 18:23:38 5: Triggering aklih (1 changes)
2014.11.17 18:23:38 5: Notify loop for aklih an
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih an -> an
2014.11.17 18:23:38 4: eventTypes: readingsProxy aklih state: off -> state: off
2014.11.17 18:23:38 4: eventTypes: I2C_MCP23017 mcp_20 PortA0: on -> PortA0: on
2014.11.17 18:23:38 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:38 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:38 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:38 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:38 5: Triggering Interrupt (4 changes)
2014.11.17 18:23:38 5: Notify loop for Interrupt Pinlevel: high
2014.11.17 18:23:38 4: eventTypes: RPI_GPIO Interrupt Pinlevel: high -> Pinlevel: high
2014.11.17 18:23:38 4: eventTypes: RPI_GPIO Interrupt on -> on
2014.11.17 18:23:38 4: eventTypes: RPI_GPIO Interrupt Toggle: off -> Toggle: off
2014.11.17 18:23:38 4: eventTypes: RPI_GPIO Interrupt Counter: 350 -> Counter: .*
2014.11.17 18:23:38 4: eventTypes: RPI_GPIO Interrupt state: on -> state: on
2014.11.17 18:23:38 4: akreh: set hash->{DEVICE} PortA2 off
2014.11.17 18:23:38 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 1|i2caddress: 32
2014.11.17 18:23:38 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:38 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 1|i2caddress: 32
2014.11.17 18:23:38 5: chip: HWaccess byteweise schreiben, Reg: 0x12 Inh: 0x01, laenge: 2
2014.11.17 18:23:38 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 1
2014.11.17 18:23:38 5: mcp_20 UpdReadings Register: 18, Inhalt: 1
2014.11.17 18:23:38 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:38 5: Notify loop for mcp_20 PortA2: off
2014.11.17 18:23:38 5: Triggering akreh (1 changes)
2014.11.17 18:23:38 5: Notify loop for akreh aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh aus -> aus
2014.11.17 18:23:38 4: eventTypes: readingsProxy akreh state: on -> state: on
2014.11.17 18:23:38 4: eventTypes: I2C_MCP23017 mcp_20 PortA2: off -> PortA2: off
2014.11.17 18:23:39 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:39 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 2|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 2|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess byteweise schreiben, Reg: 0x13 Inh: 0x02, laenge: 2
2014.11.17 18:23:39 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 2
2014.11.17 18:23:39 5: mcp_20 UpdReadings Register: 19, Inhalt: 2
2014.11.17 18:23:39 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:39 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:39 5: exec at command kre_oben
2014.11.17 18:23:39 5: Cmd: >setreading Rollokre state geöffnet<
2014.11.17 18:23:39 5: Triggering Rollokre (1 changes)
2014.11.17 18:23:39 5: Notify loop for Rollokre geöffnet
2014.11.17 18:23:39 5: Triggering act_on_Rollokre
2014.11.17 18:23:39 4: act_on_Rollokre exec {
    fhem ("delete kre_down") if (Value("kre_down") ne "");;
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");;
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");;
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");;
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");;
    if ($svar eq "on") {
fhem "set akreh aus";;
    fhem "define kre_down at +00:00:01 set akrer off-for-timer 5";;
    fhem "setreading Rollokre state runterfahren";;
    fhem "define kre_clos at +00:00:06 setreading Rollokre state geschlossen";;
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";;
}
} elsif ("$EVENT" eq "hoch") {
    fhem "set akrer aus";;
fhem "define kre_hoch at +00:00:01 set akreh off-for-timer 5";;
fhem "setreading Rollokre state hochfahren";;
fhem "define kre_oben at +00:00:06 setreading Rollokre state geöffnet";;
} elsif ("$EVENT" eq "stop") {
    fhem "set akrer aus";;
    fhem "set akreh aus";;
    fhem "setreading Rollokre state gestoppt";;
}
}
2014.11.17 18:23:39 5: Cmd: >{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "on") {
fhem "set akreh aus";
    fhem "define kre_down at +00:00:01 set akrer off-for-timer 5";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:06 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
    fhem "set akrer aus";
fhem "define kre_hoch at +00:00:01 set akreh off-for-timer 5";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:06 setreading Rollokre state geöffnet";
} elsif ("$EVENT" eq "stop") {
    fhem "set akrer aus";
    fhem "set akreh aus";
    fhem "setreading Rollokre state gestoppt";
}
}<
2014.11.17 18:23:39 5: Cmd: >delete kre_oben<
2014.11.17 18:23:39 5: Triggering global (1 changes)
2014.11.17 18:23:39 5: Notify loop for global DELETED kre_oben
2014.11.17 18:23:39 5: Triggering aflh (1 changes)
2014.11.17 18:23:39 5: Notify loop for aflh aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflh aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflh state: on -> state: on
2014.11.17 18:23:39 5: Triggering aflr (1 changes)
2014.11.17 18:23:39 5: Notify loop for aflr aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflr aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflr state: on -> state: on
2014.11.17 18:23:39 5: Triggering agwch (1 changes)
2014.11.17 18:23:39 5: Notify loop for agwch aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwch aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwch state: on -> state: on
2014.11.17 18:23:39 5: Triggering agwcr (1 changes)
2014.11.17 18:23:39 5: Notify loop for agwcr aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwcr aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwcr state: on -> state: on
2014.11.17 18:23:39 5: Triggering aklih (1 changes)
2014.11.17 18:23:39 5: Notify loop for aklih an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklih an -> an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklih state: off -> state: off
2014.11.17 18:23:39 5: Triggering aklir (1 changes)
2014.11.17 18:23:39 5: Notify loop for aklir aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklir aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklir state: on -> state: on
2014.11.17 18:23:39 5: Triggering akreh (1 changes)
2014.11.17 18:23:39 5: Notify loop for akreh aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akreh aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akreh state: on -> state: on
2014.11.17 18:23:39 5: Triggering akrer (1 changes)
2014.11.17 18:23:39 5: Notify loop for akrer aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akrer aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akrer state: on -> state: on
2014.11.17 18:23:39 4: eventTypes: dummy Rollokre geöffnet -> geöffnet
2014.11.17 18:23:39 4: eventTypes: dummy Rollokre state: geöffnet -> state: geöffnet
2014.11.17 18:23:39 5: Interrupt, in fileaccess: edge
2014.11.17 18:23:39 5: Toggle war auf off
2014.11.17 18:23:39 5: Toggle ist jetzt on
2014.11.17 18:23:39 5: Zaehler ist jetzt 351
2014.11.17 18:23:39 5: Cmd: >get mcp_20<
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess byteweise lesen setze Registerpointer auf 18
2014.11.17 18:23:39 5: chip: HWaccess byteweise lesen setze Registerpointer auf 19
2014.11.17 18:23:39 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.11.17 18:23:39 5: mcp_20 UpdReadings Register: 19, Inhalt: 0
2014.11.17 18:23:39 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:39 5: Notify loop for mcp_20 PortB1: off
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 PortB1: off -> PortB1: off
2014.11.17 18:23:39 5: Triggering sklir (1 changes)
2014.11.17 18:23:39 5: Notify loop for sklir on
2014.11.17 18:23:39 4: eventTypes: readingsProxy sklir on -> on
2014.11.17 18:23:39 4: eventTypes: readingsProxy sklir state: on -> state: on
2014.11.17 18:23:39 5: mcp_20 UpdReadings Register: 18, Inhalt: 1
2014.11.17 18:23:39 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:39 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:39 5: Triggering Interrupt (4 changes)
2014.11.17 18:23:39 5: Notify loop for Interrupt Pinlevel: high
2014.11.17 18:23:39 4: eventTypes: RPI_GPIO Interrupt Pinlevel: high -> Pinlevel: high
2014.11.17 18:23:39 4: eventTypes: RPI_GPIO Interrupt on -> on
2014.11.17 18:23:39 4: eventTypes: RPI_GPIO Interrupt Toggle: on -> Toggle: on
2014.11.17 18:23:39 4: eventTypes: RPI_GPIO Interrupt Counter: 351 -> Counter: .*
2014.11.17 18:23:39 4: eventTypes: RPI_GPIO Interrupt state: on -> state: on
2014.11.17 18:23:39 5: exec at command kli_down
2014.11.17 18:23:39 5: Cmd: >set aklir off-for-timer 5<
2014.11.17 18:23:39 4: aklir: set hash->{DEVICE} PortA1 on
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 3|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 3|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess byteweise schreiben, Reg: 0x12 Inh: 0x03, laenge: 2
2014.11.17 18:23:39 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 3
2014.11.17 18:23:39 5: mcp_20 UpdReadings Register: 18, Inhalt: 3
2014.11.17 18:23:39 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:39 5: Notify loop for mcp_20 PortA1: on
2014.11.17 18:23:39 5: Triggering aklir (1 changes)
2014.11.17 18:23:39 5: Notify loop for aklir an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklir an -> an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklir state: off -> state: off
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 PortA1: on -> PortA1: on
2014.11.17 18:23:39 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:39 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 0|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:39 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 0|i2caddress: 32
2014.11.17 18:23:39 5: chip: HWaccess byteweise schreiben, Reg: 0x13 Inh: 0x00, laenge: 2
2014.11.17 18:23:39 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.11.17 18:23:39 5: mcp_20 UpdReadings Register: 19, Inhalt: 0
2014.11.17 18:23:39 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:39 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:39 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:39 5: Triggering global (1 changes)
2014.11.17 18:23:39 5: Notify loop for global DELETED kli_down
2014.11.17 18:23:39 5: Triggering aflh (1 changes)
2014.11.17 18:23:39 5: Notify loop for aflh aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflh aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflh state: on -> state: on
2014.11.17 18:23:39 5: Triggering aflr (1 changes)
2014.11.17 18:23:39 5: Notify loop for aflr aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflr aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy aflr state: on -> state: on
2014.11.17 18:23:39 5: Triggering agwch (1 changes)
2014.11.17 18:23:39 5: Notify loop for agwch aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwch aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwch state: on -> state: on
2014.11.17 18:23:39 5: Triggering agwcr (1 changes)
2014.11.17 18:23:39 5: Notify loop for agwcr aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwcr aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy agwcr state: on -> state: on
2014.11.17 18:23:39 5: Triggering aklih (1 changes)
2014.11.17 18:23:39 5: Notify loop for aklih an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklih an -> an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklih state: off -> state: off
2014.11.17 18:23:39 5: Triggering aklir (1 changes)
2014.11.17 18:23:39 5: Notify loop for aklir an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklir an -> an
2014.11.17 18:23:39 4: eventTypes: readingsProxy aklir state: off -> state: off
2014.11.17 18:23:39 5: Triggering akreh (1 changes)
2014.11.17 18:23:39 5: Notify loop for akreh aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akreh aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akreh state: on -> state: on
2014.11.17 18:23:39 5: Triggering akrer (1 changes)
2014.11.17 18:23:39 5: Notify loop for akrer aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akrer aus -> aus
2014.11.17 18:23:39 4: eventTypes: readingsProxy akrer state: on -> state: on
2014.11.17 18:23:42 4: aklih: set hash->{DEVICE} PortA0 off
2014.11.17 18:23:42 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 2|i2caddress: 32
2014.11.17 18:23:42 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:42 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 2|i2caddress: 32
2014.11.17 18:23:42 5: chip: HWaccess byteweise schreiben, Reg: 0x12 Inh: 0x02, laenge: 2
2014.11.17 18:23:42 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 2
2014.11.17 18:23:42 5: mcp_20 UpdReadings Register: 18, Inhalt: 2
2014.11.17 18:23:42 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:42 5: Notify loop for mcp_20 PortA0: off
2014.11.17 18:23:42 5: Triggering aklih (1 changes)
2014.11.17 18:23:42 5: Notify loop for aklih aus
2014.11.17 18:23:42 4: eventTypes: readingsProxy aklih aus -> aus
2014.11.17 18:23:42 4: eventTypes: readingsProxy aklih state: on -> state: on
2014.11.17 18:23:42 4: eventTypes: I2C_MCP23017 mcp_20 PortA0: off -> PortA0: off
2014.11.17 18:23:42 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:42 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:42 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:42 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:42 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 0|i2caddress: 32
2014.11.17 18:23:42 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:42 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 0|i2caddress: 32
2014.11.17 18:23:42 5: chip: HWaccess byteweise schreiben, Reg: 0x13 Inh: 0x00, laenge: 2
2014.11.17 18:23:42 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.11.17 18:23:42 5: mcp_20 UpdReadings Register: 19, Inhalt: 0
2014.11.17 18:23:42 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:42 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:42 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:42 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:44 4: aklir: set hash->{DEVICE} PortA1 off
2014.11.17 18:23:44 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 0|i2caddress: 32
2014.11.17 18:23:44 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:44 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 0|i2caddress: 32
2014.11.17 18:23:44 5: chip: HWaccess byteweise schreiben, Reg: 0x12 Inh: 0x00, laenge: 2
2014.11.17 18:23:44 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.11.17 18:23:44 5: mcp_20 UpdReadings Register: 18, Inhalt: 0
2014.11.17 18:23:44 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:44 5: Notify loop for mcp_20 PortA1: off
2014.11.17 18:23:44 5: Triggering aklir (1 changes)
2014.11.17 18:23:44 5: Notify loop for aklir aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aklir aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aklir state: on -> state: on
2014.11.17 18:23:44 4: eventTypes: I2C_MCP23017 mcp_20 PortA1: off -> PortA1: off
2014.11.17 18:23:44 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:44 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:44 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:44 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:44 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 0|i2caddress: 32
2014.11.17 18:23:44 5: chip: HWaccess I2CAddr: 0x20
2014.11.17 18:23:44 5: chip: vom client empfangen|direction: i2cwrite|reg: 19|data: 0|i2caddress: 32
2014.11.17 18:23:44 5: chip: HWaccess byteweise schreiben, Reg: 0x13 Inh: 0x00, laenge: 2
2014.11.17 18:23:44 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.11.17 18:23:44 5: mcp_20 UpdReadings Register: 19, Inhalt: 0
2014.11.17 18:23:44 5: Triggering mcp_20 (1 changes)
2014.11.17 18:23:44 5: Notify loop for mcp_20 Ok
2014.11.17 18:23:44 4: eventTypes: I2C_MCP23017 mcp_20 Ok -> Ok
2014.11.17 18:23:44 4: eventTypes: I2C_MCP23017 mcp_20 state: Ok -> state: Ok
2014.11.17 18:23:44 5: exec at command kli_clos
2014.11.17 18:23:44 5: Cmd: >setreading Rollokli state geschlossen<
2014.11.17 18:23:44 5: Triggering Rollokli (1 changes)
2014.11.17 18:23:44 5: Notify loop for Rollokli geschlossen
2014.11.17 18:23:44 5: Triggering act_on_Rollokli
2014.11.17 18:23:44 4: act_on_Rollokli exec {
    fhem ("delete kli_down") if (Value("kli_down") ne "");;
    fhem ("delete kli_clos") if (Value("kli_clos") ne "");;
    fhem ("delete kli_hoch") if (Value("kli_hoch") ne "");;
    fhem ("delete kli_oben") if (Value("kli_oben") ne "");;
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("sklih","state","off");;
    if ($svar eq "on") {
fhem "set aklih aus";;
    fhem "define kli_down at +00:00:01 set aklir off-for-timer 5";;
    fhem "setreading Rollokli state runterfahren";;
    fhem "define kli_clos at +00:00:06 setreading Rollokli state geschlossen";;
    }
    else {
    fhem "setreading Rollokli state Schalter betätigt";;
}
} elsif ("$EVENT" eq "hoch") {
    fhem "set aklir aus";;
fhem "define kli_hoch at +00:00:01 set aklih off-for-timer 5";;
fhem "setreading Rollokli state hochfahren";;
fhem "define kli_oben at +00:00:06 setreading Rollokli state geöffnet";;
} elsif ("$EVENT" eq "stop") {
    fhem "set aklir aus";;
    fhem "set aklih aus";;
    fhem "setreading Rollokli state gestoppt";;
}
}
2014.11.17 18:23:44 5: Cmd: >{
    fhem ("delete kli_down") if (Value("kli_down") ne "");
    fhem ("delete kli_clos") if (Value("kli_clos") ne "");
    fhem ("delete kli_hoch") if (Value("kli_hoch") ne "");
    fhem ("delete kli_oben") if (Value("kli_oben") ne "");
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("sklih","state","off");
    if ($svar eq "on") {
fhem "set aklih aus";
    fhem "define kli_down at +00:00:01 set aklir off-for-timer 5";
    fhem "setreading Rollokli state runterfahren";
    fhem "define kli_clos at +00:00:06 setreading Rollokli state geschlossen";
    }
    else {
    fhem "setreading Rollokli state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
    fhem "set aklir aus";
fhem "define kli_hoch at +00:00:01 set aklih off-for-timer 5";
fhem "setreading Rollokli state hochfahren";
fhem "define kli_oben at +00:00:06 setreading Rollokli state geöffnet";
} elsif ("$EVENT" eq "stop") {
    fhem "set aklir aus";
    fhem "set aklih aus";
    fhem "setreading Rollokli state gestoppt";
}
}<
2014.11.17 18:23:44 5: Cmd: >delete kli_clos<
2014.11.17 18:23:44 5: Triggering global (1 changes)
2014.11.17 18:23:44 5: Notify loop for global DELETED kli_clos
2014.11.17 18:23:44 5: Triggering aflh (1 changes)
2014.11.17 18:23:44 5: Notify loop for aflh aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aflh aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aflh state: on -> state: on
2014.11.17 18:23:44 5: Triggering aflr (1 changes)
2014.11.17 18:23:44 5: Notify loop for aflr aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aflr aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aflr state: on -> state: on
2014.11.17 18:23:44 5: Triggering agwch (1 changes)
2014.11.17 18:23:44 5: Notify loop for agwch aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy agwch aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy agwch state: on -> state: on
2014.11.17 18:23:44 5: Triggering agwcr (1 changes)
2014.11.17 18:23:44 5: Notify loop for agwcr aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy agwcr aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy agwcr state: on -> state: on
2014.11.17 18:23:44 5: Triggering aklih (1 changes)
2014.11.17 18:23:44 5: Notify loop for aklih aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aklih aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aklih state: on -> state: on
2014.11.17 18:23:44 5: Triggering aklir (1 changes)
2014.11.17 18:23:44 5: Notify loop for aklir aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aklir aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy aklir state: on -> state: on
2014.11.17 18:23:44 5: Triggering akreh (1 changes)
2014.11.17 18:23:44 5: Notify loop for akreh aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy akreh aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy akreh state: on -> state: on
2014.11.17 18:23:44 5: Triggering akrer (1 changes)
2014.11.17 18:23:44 5: Notify loop for akrer aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy akrer aus -> aus
2014.11.17 18:23:44 4: eventTypes: readingsProxy akrer state: on -> state: on
2014.11.17 18:23:44 4: eventTypes: dummy Rollokli geschlossen -> geschlossen
2014.11.17 18:23:44 4: eventTypes: dummy Rollokli state: geschlossen -> state: geschlossen

klausw

Gehen die LED's denn gleichzeitig an?

Was willst du damit bezwecken:?
######### Rollade KÜCHE RECHTS per Schalter fahren
define akrehNotify notify skreh:off set Rollokre hoch
define akrerNotify notify skrer:off set Rollokre runter


Der Ausgangsport beeinflusst deinen Dummy ...
Der Dummy sollte nur von den Schaltern und den at's angesprochen werden
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Also die LEDs gehen hintereinander an, in  ca 1sek  Abstand.

Mit dem Code wollte ich, wenn der Schalter gedrückt wird, dass der Dummy für das Rollo auf hochfahren gesetzt wird. Habe gedacht, so wäre das richtig, aber scheinbar gibt es eine deutlich bessere Lösung  ;D

So klappt es jedenfalls, dass der Ausgang für den Dummy nur gesetzt wird, wenn der Schalter "angeschaltet" wird, und eben nicht mehr beim "ausschalten" 

klausw

die ganze Verarbeitung solltest du im notify des dummys machen

und das entprellen an den schaltereingängen

keinesfalls am output
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Wie Binde ich das denn in das notify mit ein?

Da steh ich mal wieder voll auf dem Schlauch.

Das müsste ja oben im Bereich der Timer stehen, und dann ein
In Schalter runter gedrückt, dann runterfahren.
Wäre das so ähnlich:?

fhem "set rollokli runter" if ReadingsVal("sklih","state","off");;/

klausw

Zitat von: IPPhoner2b am 17 November 2014, 19:45:22
Wie Binde ich das denn in das notify mit ein?

Da steh ich mal wieder voll auf dem Schlauch.

Das müsste ja oben im Bereich der Timer stehen, und dann ein
In Schalter runter gedrückt, dann runterfahren.
Wäre das so ähnlich:?

fhem "set rollokli runter" if ReadingsVal("sklih","state","off");;/


ups, Du hast recht
Vergiss, was ich gesagt habe.

Ich muss mal in Ruhe drüberschauen...das wird heut nix mehr
Aber vielleicht findest Du es inzwischen  ;)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Ganz in Ruhe, habe es mir auch mal vor der Glotze gemütlich gemacht  8)

Wünsche noch einen angenehmen und schönen Abend  ;D

IPPhoner2b

#22
Hallo Klaus,

also was ich wenigstens von der Hardware Seite herausfinden konnte, es ist absolut reproduzierbar, kommt aber scheinbar immer nur bei einem schnellen Wechsel von hoch, runter, hoch zustande.

Habe testweise in der Config für das Hoch und runterfahren noch jeweils am Anfang Beide Ausgänge ausschalten lassen, und nicht nur einen, aber selbst das hat keinen gewünschten Erfolg gebracht, scheint nicht unbedingt an dem Skript zu liegen, evtl. ja doch ein Problem der schnellen Eingangsfolge oder so, das Notify da nicht richtig hinterherkommt?

Über das Web IF kann ich mich Totklicken, und bekomme den Fehler nicht hin, also es muss was mit der Eingangsabfrage des MCPs zu tun haben, schätze ich mal

Hier der leicht abgeänderte Code, oder kann es noch mit den Timern zusammenhängen? Aber eigentlich wird ja, bevor der Timer gestartet wird, der Ausgang deaktiviert, das versteh ich überhaupt nicht mehr.
Rollokli {
    fhem ("delete kli_down") if (Value("kli_down") ne "");
    fhem ("delete kli_clos") if (Value("kli_clos") ne "");
    fhem ("delete kli_hoch") if (Value("kli_hoch") ne "");
    fhem ("delete kli_oben") if (Value("kli_oben") ne "");
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("sklih","state","off");
    if ($svar eq "on") {
fhem "set aklih,aklir aus";
    fhem "define kli_down at +00:00:01 set aklir off-for-timer 5";
    fhem "setreading Rollokli state runterfahren";
    fhem "define kli_clos at +00:00:06 setreading Rollokli state geschlossen";
    }
    else {
    fhem "setreading Rollokli state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
    fhem "set aklir,aklih aus";
fhem "define kli_hoch at +00:00:01 set aklih off-for-timer 5";
fhem "setreading Rollokli state hochfahren";
fhem "define kli_oben at +00:00:06 setreading Rollokli state geöffnet";
} elsif ("$EVENT" eq "stop") {
    fhem "set aklir,aklih aus";
    fhem "setreading Rollokli state gestoppt";
}
}


:EDITH:
Bevor ich lange rumprobiere und es evtl gar nicht möglich ist, noch eine Sache,
kann ich in den Code auch direkt Positionen anfahren lassen, so wie es mit den Homematic Sachen auch geht, also das man erstmal festlegt, wie lange der Rolladen fürs hoch und Runterfahren braucht, und dann eben, dass er mehrere Positionen, also z.B. 30,50 und 70% anfahren kann, oder müsste das ein jeweils eigener Block in dem oberen Code werden, damit ich es auch auswählen kann?

klausw

Zitat von: IPPhoner2b am 23 November 2014, 10:32:20
Hallo Klaus,

also was ich wenigstens von der Hardware Seite herausfinden konnte, es ist absolut reproduzierbar, kommt aber scheinbar immer nur bei einem schnellen Wechsel von hoch, runter, hoch zustande.

Habe testweise in der Config für das Hoch und runterfahren noch jeweils am Anfang Beide Ausgänge ausschalten lassen, und nicht nur einen, aber selbst das hat keinen gewünschten Erfolg gebracht, scheint nicht unbedingt an dem Skript zu liegen, evtl. ja doch ein Problem der schnellen Eingangsfolge oder so, das Notify da nicht richtig hinterherkommt?

Über das Web IF kann ich mich Totklicken, und bekomme den Fehler nicht hin, also es muss was mit der Eingangsabfrage des MCPs zu tun haben, schätze ich mal

Hier der leicht abgeänderte Code, oder kann es noch mit den Timern zusammenhängen? Aber eigentlich wird ja, bevor der Timer gestartet wird, der Ausgang deaktiviert, das versteh ich überhaupt nicht mehr.

Gute Frage, an den Timern kann es meiner Meinung nach nicht liegen. Du löschst diese ja und dann sollten die auch nix mehr schalten
Die Weboberfläche ist natürlich langsamer als die Hardwaretasten. Diese werden über einen Interrupt ausgelöst (wober ich nicht weiss, wie das im Detail in Perl läuft).

Aber muss: fhem "set aklih,aklir aus"; nicht fhem "set aklih,aklir an"; oder on oder was auch immer heissen?
Ich denke du hast invertierte logik?

Zitat von: IPPhoner2b am 23 November 2014, 10:32:20
Bevor ich lange rumprobiere und es evtl gar nicht möglich ist, noch eine Sache,
kann ich in den Code auch direkt Positionen anfahren lassen, so wie es mit den Homematic Sachen auch geht, also das man erstmal festlegt, wie lange der Rolladen fürs hoch und Runterfahren braucht, und dann eben, dass er mehrere Positionen, also z.B. 30,50 und 70% anfahren kann, oder müsste das ein jeweils eigener Block in dem oberen Code werden, damit ich es auch auswählen kann?
Jein ;)
Bei Homematic weiss das Rolladenmodul selbst, wo dein Behang ist (über laufzeit).
Du kannst natürlich über die Timerlaufzeit auf eine feste Postition fahren.
Dazu benötigst du für jede Position, die du haben möchtest eigene timer...das ist halt recht komplex.
Aber ein Dummy Button, der auf 50% fährt (rollo vorher komplett geschlossen/geöffnet) geht natürlich.
Nen silder zum einstellen der Position kannst du meiner Meinung nach vergessen.

Eine Möglichkeit währe evtl. ein eigenes Modul zu schreiben, dem du alte und neue Position übergibst und welches für dich die timer berechnet (der Behang fährt ja nicht linear). Dann sollte es auch mit dem Slider funktionieren.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Also mit der Inverten Logik,
ich habe ja die Ausgänge umgepolt, deswegen heißt ja "aus", dass die LED "aus" ist, also das klappt soweit auch alles, das einzige ist halt, dass ich für die gesteuerte Zeit immer noch "off-for-timer" nutzen muss, um den Ausgang für die gewünschte Zeit "an" zu machen. Das ist das einzige Irreführende noch, aber sonst klappt es *g*

Schätze mit den Fehlinterpretationen läuft das wirklich über zu viel Input in kurzer Zeit, dass die Interrupt Steuerung durcheinander kommt. aber wenn man es mal richtig betrachtet, werden die Rollos in 80% der Fälle durch die Sunset/Sunrise Steuerung geschaltet, und dann eben wahrscheinlich Abends mittels Schalter, der in der "oben" Stellung ruhte, nach unten gefahren, also da wird zu 99,9999% wohl kein wirres herumgedrücke auf dem Schalter erfolgen *g*

Deswegen gehe ich davon aus, dass in deinem Code kein Fehler zu finden sein wird, das scheint wirklich auf der Hardware basiert zu sein.



Das mit der gewünschten Position anfahren, habe ich mir fast schon gedacht, dass das so ohne weiteres nicht klappt, werde wohl den Teil noch soweit erweitern, dass meine Eltern die Möglichkeit haben, über das WebIf 2 zusätzliche Positionen anzufahren, also etwas runter, und eben bis auf Schlitzbreite oder so.


Wo ich noch nicht ganz sicher bin ist, ob ich noch so etwas wie eine Zeitsteuerung für den Taster mit einbringen soll, falls meine Eltern das Rollo mit dem Schalter runterfahren, es dann aber stoppen möchten, das ist so ja ohne weiteres nicht möglich, weil ja nur kurz der "Impuls" ausgewertet wird, und dann fährt das Rollo die eingestellte Zeit.

Hatte das in dem anderen Thread mal kurz durchgeschaut, aber der Aufwand ist mir irgendwie dafür doch zu viel. So oft wird das vermutlich eh nicht genutzt.


Habe gestern kurzzeitig damit angefangen, schonmal die Skizze des Floorplans zu erstellen, dann geht es die nächsten Tage damit weiter.  Die anderen Rollos werden erstmal vorbehaltlich angelegt, da weiß ich noch nicht, ob die über Homematic oder über Kabel gesteuert werden. Jedenfalls die Funksteckdose klappte schonmal zeitgesteuert. Hatte mir den Lan Config Adapter geholt, dann aber gelesen, dass man die Firmware der einzelnen Bauteile wohl nur über den USB Stick updaten kann, naja, wird der auchnochmal geordert *G* Was kost die Welt  :o ;D


IPPhoner2b

Mal ne andere Frage,

habe jetzt über "include" meine Fhem.cfg stark abgespeckt, und fast alles in einzelne Räume verteilt, und auch viel mit Kommentaren versehen, dass ich in 6-235 Monaten auch noch verstehe, was damals da dran gemacht wurde.

Jetzt habe ich nur 2 Probleme, das kleinere, sind die Umlaute, diese werden jetzt kryptisch dargestellt, kann aber geändert werden, indem die Dateien direkt in FHEM nochmals über das Web IF geändert werden,

aber was noch richtig stört, das System lagt jetzt sehr extrem, wenn ich einen Schalter betätige, reagiert Fhem erst nach knapp 2 sekunden Gedenkzeit. Ist das über die "Include" Funktion normal, oder liegt das an den sehr groß gewordenen Configs mit den Kommentaren?

Konnte da in der Suche nichts finden, aber vielleicht weiß es ja jemand so schon.

Also werde ich wohl alles wieder Rückgängig machen, und dann hinterher eine Config kopieren, und ausdrucken, damit ich mir dort meine "Erklärungen" absichern kann. :o ::)

Puschel74

Hallo,

mit den Erklärungen ausdrucken ist eine gute Idee  ;)

Zitathabe jetzt über "include" meine Fhem.cfg stark abgespeckt, und fast alles in einzelne Räume verteilt, und auch viel mit Kommentaren versehen,

Ja FHEM bietet die Möglichkeit mit include Dateien einzubinden.
Aber wozu soll das in einzelne Dateien ausgelagert werden?
Lass doch die fhem.cfg so wie sie ist - FHEM ist glücklich damit.

Zitataber was noch richtig stört, das System lagt jetzt sehr extrem, wenn ich einen Schalter betätige,
Würde mich wundern wenn das durch include zustande kommt.
Lass doch mal apptime drüberlaufen dann siehst du was FHEM ausbremst.

Grüße

P.S.: Ja, ich hab auch teilweise include in meiner Konfig aber nur weil ich es am Anfang auch nicht besser wusste und mittlerweile schlicht zu faul bin das wieder rückgängig zu machen.
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.

IPPhoner2b

Hallo Puschel,

danke für den Tipp mit Apptime, allerdings kann ich das absolut nicht deuten, was mir das Teil auswirft.

Habe aber eben alle Funktionen wieder in die Fhem.cfg kopiert, und so gut wie alle Kommentare rausgeschmissen.
Allerdings lagt das System trotzdem genauso.

Habe dann mal die "Reserve" Ausgänge von 2 Chips gelöscht, und siehe da, es läuft wieder absolut stabil und schnell.

Irgendwie kann ich mir da noch keinen Reim drauf bilden.
Habe eigentlich nur folgende Sachen gelöscht:

define mcp_21 I2C_MCP23017 0x21
attr mcp_21 IODev chip
attr mcp_21 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_21 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_21 group MCP23017

define mcp_22 I2C_MCP23017 0x22
attr mcp_22 IODev chip
attr mcp_22 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_22 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_22 group MCP23017

define a21a0 readingsProxy mcp_21:PortA0
attr a21a0 alias Ausgang Chip21 Port A0
attr a21a0 devStateIcon aus:off an:on
attr a21a0 eventMap on:aus off:an
attr a21a0 group OutputPorts
attr a21a0 setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr a21a0 setList off on
attr a21a0 valueFn {($VALUE eq "on")?"off":"on"}

define a21a1 readingsProxy mcp_21:PortA1
attr a21a1 alias Ausgang Chip21 Port A1
attr a21a1 devStateIcon aus:off an:on
attr a21a1 eventMap on:aus off:an
attr a21a1 group OutputPorts
attr a21a1 setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr a21a1 setList off on
attr a21a1 valueFn {($VALUE eq "on")?"off":"on"}

define a21a2 readingsProxy mcp_21:PortA2
attr a21a2 alias Ausgang Chip21 Port A2
attr a21a2 devStateIcon aus:off an:on
attr a21a2 eventMap on:aus off:an
attr a21a2 group OutputPorts
attr a21a2 setFn {($CMD eq "on")?"PortA2 off":"PortA2 on"}
attr a21a2 setList off on
attr a21a2 valueFn {($VALUE eq "on")?"off":"on"}

define a21a3 readingsProxy mcp_21:PortA3
attr a21a3 alias Ausgang Chip21 Port A3
attr a21a3 devStateIcon aus:off an:on
attr a21a3 eventMap on:aus off:an
attr a21a3 group OutputPorts
attr a21a3 setFn {($CMD eq "on")?"PortA3 off":"PortA3 on"}
attr a21a3 setList off on
attr a21a3 valueFn {($VALUE eq "on")?"off":"on"}

define a21a4 readingsProxy mcp_21:PortA4
attr a21a4 alias Ausgang Chip21 Port A4
attr a21a4 devStateIcon aus:off an:on
attr a21a4 eventMap on:aus off:an
attr a21a4 group OutputPorts
attr a21a4 setFn {($CMD eq "on")?"PortA4 off":"PortA4 on"}
attr a21a4 setList off on
attr a21a4 valueFn {($VALUE eq "on")?"off":"on"}

define a21a5 readingsProxy mcp_21:PortA5
attr a21a5 alias Ausgang Chip21 Port A5
attr a21a5 devStateIcon aus:off an:on
attr a21a5 eventMap on:aus off:an
attr a21a5 group OutputPorts
attr a21a5 setFn {($CMD eq "on")?"PortA5 off":"PortA5 on"}
attr a21a5 setList off on
attr a21a5 valueFn {($VALUE eq "on")?"off":"on"}

define a21a6 readingsProxy mcp_21:PortA6
attr a21a6 alias Ausgang Chip21 Port A6
attr a21a6 devStateIcon aus:off an:on
attr a21a6 eventMap on:aus off:an
attr a21a6 group OutputPorts
attr a21a6 setFn {($CMD eq "on")?"PortA6 off":"PortA6 on"}
attr a21a6 setList off on
attr a21a6 valueFn {($VALUE eq "on")?"off":"on"}

define a21a7 readingsProxy mcp_21:PortA7
attr a21a7 alias Ausgang Chip21 Port A7
attr a21a7 devStateIcon aus:off an:on
attr a21a7 eventMap on:aus off:an
attr a21a7 group OutputPorts
attr a21a7 setFn {($CMD eq "on")?"PortA7 off":"PortA7 on"}
attr a21a7 setList off on
attr a21a7 valueFn {($VALUE eq "on")?"off":"on"}

define a21b0 readingsProxy mcp_21:PortB0
attr a21b0 alias Ausgang Chip21 Port B0
attr a21b0 devStateIcon aus:off an:on
attr a21b0 eventMap on:aus off:an
attr a21b0 group OutputPorts
attr a21b0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}
attr a21b0 setList off on
attr a21b0 valueFn {($VALUE eq "on")?"off":"on"}

define a21b1 readingsProxy mcp_21:PortB1
attr a21b1 alias Ausgang Chip21 Port B1
attr a21b1 devStateIcon aus:off an:on
attr a21b1 eventMap on:aus off:an
attr a21b1 group OutputPorts
attr a21b1 setFn {($CMD eq "on")?"PortB1 off":"PortB1 on"}
attr a21b1 setList off on
attr a21b1 valueFn {($VALUE eq "on")?"off":"on"}

define a21b2 readingsProxy mcp_21:PortB2
attr a21b2 alias Ausgang Chip21 Port B2
attr a21b2 devStateIcon aus:off an:on
attr a21b2 eventMap on:aus off:an
attr a21b2 group OutputPorts
attr a21b2 setFn {($CMD eq "on")?"PortB2 off":"PortB2 on"}
attr a21b2 setList off on
attr a21b2 valueFn {($VALUE eq "on")?"off":"on"}

define a21b3 readingsProxy mcp_21:PortB3
attr a21b3 alias Ausgang Chip21 Port B3
attr a21b3 devStateIcon aus:off an:on
attr a21b3 eventMap on:aus off:an
attr a21b3 group OutputPorts
attr a21b3 setFn {($CMD eq "on")?"PortB3 off":"PortB3 on"}
attr a21b3 setList off on
attr a21b3 valueFn {($VALUE eq "on")?"off":"on"}

define a21b4 readingsProxy mcp_21:PortB4
attr a21b4 alias Ausgang Chip21 Port B4
attr a21b4 devStateIcon aus:off an:on
attr a21b4 eventMap on:aus off:an
attr a21b4 group OutputPorts
attr a21b4 setFn {($CMD eq "on")?"PortB4 off":"PortB4 on"}
attr a21b4 setList off on
attr a21b4 valueFn {($VALUE eq "on")?"off":"on"}

define a21b5 readingsProxy mcp_21:PortB5
attr a21b5 alias Ausgang Chip21 Port B5
attr a21b5 devStateIcon aus:off an:on
attr a21b5 eventMap on:aus off:an
attr a21b5 group OutputPorts
attr a21b5 setFn {($CMD eq "on")?"PortB5 off":"PortB5 on"}
attr a21b5 setList off on
attr a21b5 valueFn {($VALUE eq "on")?"off":"on"}

define a21b6 readingsProxy mcp_21:PortB6
attr a21b6 alias Ausgang Chip21 Port B6
attr a21b6 devStateIcon aus:off an:on
attr a21b6 eventMap on:aus off:an
attr a21b6 group OutputPorts
attr a21b6 setFn {($CMD eq "on")?"PortB6 off":"PortB6 on"}
attr a21b6 setList off on
attr a21b6 valueFn {($VALUE eq "on")?"off":"on"}

define a21b7 readingsProxy mcp_21:PortB7
attr a21b7 alias Ausgang Chip21 Port B7
attr a21b7 devStateIcon aus:off an:on
attr a21b7 eventMap on:aus off:an
attr a21b7 group OutputPorts
attr a21b7 setFn {($CMD eq "on")?"PortB7 off":"PortB7 on"}
attr a21b7 setList off on
attr a21b7 valueFn {($VALUE eq "on")?"off":"on"}

define a22a0 readingsProxy mcp_22:PortA0
attr a22a0 alias Ausgang Chip22 Port A0
attr a22a0 devStateIcon aus:off an:on
attr a22a0 eventMap on:aus off:an
attr a22a0 group OutputPorts
attr a22a0 setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr a22a0 setList off on
attr a22a0 valueFn {($VALUE eq "on")?"off":"on"}

define a22a1 readingsProxy mcp_22:PortA1
attr a22a1 alias Ausgang Chip22 Port A1
attr a22a1 devStateIcon aus:off an:on
attr a22a1 eventMap on:aus off:an
attr a22a1 group OutputPorts
attr a22a1 setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr a22a1 setList off on
attr a22a1 valueFn {($VALUE eq "on")?"off":"on"}

define a22a2 readingsProxy mcp_22:PortA2
attr a22a2 alias Ausgang Chip22 Port A2
attr a22a2 devStateIcon aus:off an:on
attr a22a2 eventMap on:aus off:an
attr a22a2 group OutputPorts
attr a22a2 setFn {($CMD eq "on")?"PortA2 off":"PortA2 on"}
attr a22a2 setList off on
attr a22a2 valueFn {($VALUE eq "on")?"off":"on"}

define a22a3 readingsProxy mcp_22:PortA3
attr a22a3 alias Ausgang Chip22 Port A3
attr a22a3 devStateIcon aus:off an:on
attr a22a3 eventMap on:aus off:an
attr a22a3 group OutputPorts
attr a22a3 setFn {($CMD eq "on")?"PortA3 off":"PortA3 on"}
attr a22a3 setList off on
attr a22a3 valueFn {($VALUE eq "on")?"off":"on"}

define a22a4 readingsProxy mcp_22:PortA4
attr a22a4 alias Ausgang Chip22 Port A4
attr a22a4 devStateIcon aus:off an:on
attr a22a4 eventMap on:aus off:an
attr a22a4 group OutputPorts
attr a22a4 setFn {($CMD eq "on")?"PortA4 off":"PortA4 on"}
attr a22a4 setList off on
attr a22a4 valueFn {($VALUE eq "on")?"off":"on"}

define a22a5 readingsProxy mcp_22:PortA5
attr a22a5 alias Ausgang Chip22 Port A5
attr a22a5 devStateIcon aus:off an:on
attr a22a5 eventMap on:aus off:an
attr a22a5 group OutputPorts
attr a22a5 setFn {($CMD eq "on")?"PortA5 off":"PortA5 on"}
attr a22a5 setList off on
attr a22a5 valueFn {($VALUE eq "on")?"off":"on"}

define a22a6 readingsProxy mcp_22:PortA6
attr a22a6 alias Ausgang Chip22 Port A6
attr a22a6 devStateIcon aus:off an:on
attr a22a6 eventMap on:aus off:an
attr a22a6 group OutputPorts
attr a22a6 setFn {($CMD eq "on")?"PortA6 off":"PortA6 on"}
attr a22a6 setList off on
attr a22a6 valueFn {($VALUE eq "on")?"off":"on"}

define a22a7 readingsProxy mcp_22:PortA7
attr a22a7 alias Ausgang Chip22 Port A7
attr a22a7 devStateIcon aus:off an:on
attr a22a7 eventMap on:aus off:an
attr a22a7 group OutputPorts
attr a22a7 setFn {($CMD eq "on")?"PortA7 off":"PortA7 on"}
attr a22a7 setList off on
attr a22a7 valueFn {($VALUE eq "on")?"off":"on"}

define a22b0 readingsProxy mcp_22:PortB0
attr a22b0 alias Ausgang Chip22 Port B0
attr a22b0 devStateIcon aus:off an:on
attr a22b0 eventMap on:aus off:an
attr a22b0 group OutputPorts
attr a22b0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}
attr a22b0 setList off on
attr a22b0 valueFn {($VALUE eq "on")?"off":"on"}

define a22b1 readingsProxy mcp_22:PortB1
attr a22b1 alias Ausgang Chip22 Port B1
attr a22b1 devStateIcon aus:off an:on
attr a22b1 eventMap on:aus off:an
attr a22b1 group OutputPorts
attr a22b1 setFn {($CMD eq "on")?"PortB1 off":"PortB1 on"}
attr a22b1 setList off on
attr a22b1 valueFn {($VALUE eq "on")?"off":"on"}

define a22b2 readingsProxy mcp_22:PortB2
attr a22b2 alias Ausgang Chip22 Port B2
attr a22b2 devStateIcon aus:off an:on
attr a22b2 eventMap on:aus off:an
attr a22b2 group OutputPorts
attr a22b2 setFn {($CMD eq "on")?"PortB2 off":"PortB2 on"}
attr a22b2 setList off on
attr a22b2 valueFn {($VALUE eq "on")?"off":"on"}

define a22b3 readingsProxy mcp_22:PortB3
attr a22b3 alias Ausgang Chip22 Port B3
attr a22b3 devStateIcon aus:off an:on
attr a22b3 eventMap on:aus off:an
attr a22b3 group OutputPorts
attr a22b3 setFn {($CMD eq "on")?"PortB3 off":"PortB3 on"}
attr a22b3 setList off on
attr a22b3 valueFn {($VALUE eq "on")?"off":"on"}

define a22b4 readingsProxy mcp_22:PortB4
attr a22b4 alias Ausgang Chip22 Port B4
attr a22b4 devStateIcon aus:off an:on
attr a22b4 eventMap on:aus off:an
attr a22b4 group OutputPorts
attr a22b4 setFn {($CMD eq "on")?"PortB4 off":"PortB4 on"}
attr a22b4 setList off on
attr a22b4 valueFn {($VALUE eq "on")?"off":"on"}

define a22b5 readingsProxy mcp_22:PortB5
attr a22b5 alias Ausgang Chip22 Port B5
attr a22b5 devStateIcon aus:off an:on
attr a22b5 eventMap on:aus off:an
attr a22b5 group OutputPorts
attr a22b5 setFn {($CMD eq "on")?"PortB5 off":"PortB5 on"}
attr a22b5 setList off on
attr a22b5 valueFn {($VALUE eq "on")?"off":"on"}

define a22b6 readingsProxy mcp_22:PortB6
attr a22b6 alias Ausgang Chip22 Port B6
attr a22b6 devStateIcon aus:off an:on
attr a22b6 eventMap on:aus off:an
attr a22b6 group OutputPorts
attr a22b6 setFn {($CMD eq "on")?"PortB6 off":"PortB6 on"}
attr a22b6 setList off on
attr a22b6 valueFn {($VALUE eq "on")?"off":"on"}

define a22b7 readingsProxy mcp_22:PortB7
attr a22b7 alias Ausgang Chip22 Port B7
attr a22b7 devStateIcon aus:off an:on
attr a22b7 eventMap on:aus off:an
attr a22b7 group OutputPorts
attr a22b7 setFn {($CMD eq "on")?"PortB7 off":"PortB7 on"}
attr a22b7 setList off on
attr a22b7 valueFn {($VALUE eq "on")?"off":"on"}


Das was mir noch aufgefallen ist, wo ich "Apptime Total" gestartet habe, dass er obwohl nur die Ausgänge vom 20er Chip genutzt werden, auch was mit den 21er Ausgängen schreibt

name             function    max  count    total  average maxDly
         FHEMWEB:192.168.47.51:49508              FW_Read   6122     64     6147    96.05      0 HASH(FHEMWEB:192.168.47.51:49508)
                     act_on_Rollokli          notify_Exec   3826      2     5734  2867.00      0 HASH(act_on_Rollokli); HASH(Rollokli)
                                chip         RPII2C_Write   4006     37     4679   126.46      0 HASH(chip); HASH(0x23929c8)
                              mcp_20  I2C_MCP23017_I2CRec   4001     21     4484   213.52      0 HASH(mcp_20); HASH(0x23929c8)
                              mcp_20     I2C_MCP23017_Get   4007      3     4173  1391.00      0 HASH(mcp_20); mcp_20
                         Interrupt20      RPI_GPIO_Except   4049      2     4139  2069.50      0 HASH(Interrupt20)
                               sklih readingsProxy_Notify   3902    217     3951    18.21      0 HASH(sklih); HASH(mcp_20)
                         aklihNotify          notify_Exec   3865      2     3865  1932.50      0 HASH(aklihNotify); HASH(sklih)
                            Rollokli            dummy_Set   3862      1     3862  3862.00      0 HASH(Rollokli); Rollokli; hoch
                              hmlan1         HMLAN_Define   3006      1     3006  3006.00      0 HASH(hmlan1); hmlan1 HMLAN 192.168.47.98:1000
                         tmr-at_Exec      HASH(0x236f070)   2046      1     2046  2046.00   3018 HASH(kli_hoch)
                         tmr-at_Exec      HASH(0x2328998)   1945      1     1945  1945.00      4 HASH(kli_oben)
                               aklih    readingsProxy_Set    168      4      523   130.75      0 HASH(aklih); aklih; off-for-timer; 5
                              mcp_20     I2C_MCP23017_Set    162      4      363    90.75      0 HASH(mcp_20); mcp_20; PortA0; off
                               aklih readingsProxy_Notify     38    217      223     1.03      0 HASH(aklih); HASH(global)
                                chip        RPII2C_Notify    208      5      208    41.60      0 HASH(chip); HASH(global)
                               a21a0 readingsProxy_Notify     38    217      173     0.80      0 HASH(a21a0); HASH(global)
                 tmr-SetExtensionsFn SE aklih off-for-timer    168      1      168   168.00    652 SE aklih off-for-timer
              tmr-RPI_GPIO_longpress      HASH(0x22f4808)    159      1      159   159.00   3051 HASH(Interrupt20)
                               a21a2 readingsProxy_Notify     37    217      154     0.71      0 HASH(a21a2); HASH(global)
                               a21b6 readingsProxy_Notify     39    217      153     0.71      0 HASH(a21b6); HASH(global)


Weil, sobald ich den oben eingegebenen Code lösche, klappt alles ohne Probleme, allerdings finde ich den Fehler im Heuhaufen noch nicht. Aber ein gutes hat es ja, der Fehler scheint nicht durch die "includes" zu kommen, was mir hoffnung macht, es doch über die Dateien zu erledigen, weil ich das bei meinen Eltern, wahrscheinlich nur einmal anschließen werde, und dann die nächsten Jahre nix mehr mit zu tun habe.  ::) (Wunschdenken)  8)

IPPhoner2b

Hallo nochmal,

Oder müsste  ich bei

attr mcp_21 IODev Chip
und
attr mcp_22 IODev chip

Dann noch jeweils den Chip einzeln zuweisen?
Also
attr mcp_21 IODev chip_21
attr mcp_22 IODev chip_22

Würde das evtl helfen?
Komme jetzt nicht zum testen, deswegen die Frage, weils mich doch irgendwie beschäftigt

klausw

Zitat von: IPPhoner2b am 29 November 2014, 22:58:37
Oder müsste  ich bei

attr mcp_21 IODev Chip
und
attr mcp_22 IODev chip

Dann noch jeweils den Chip einzeln zuweisen?
Also
attr mcp_21 IODev chip_21
attr mcp_22 IODev chip_22

Würde das evtl helfen?
Das wird keinesfalls funktionieren. Dein "chip" ist doch nur der physikal. Zungang zum I2C. Und wenn beide IC's am selben I2CBus hängen, dann müssen die auch das selbe Modul ansprechen.

Wenn es vorher ging solltest Du mal den code vergleichen. Du hast doch sicher ein Backup gemacht  ::)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hi Klaus,

Die anderen Chips habe ich noch nicht im Code gehabt, weil es ja eigentlich nur die Reserve Chips sind, die noch nicht weiter im Einsatz geplant sind.

Jedenfalls ansprechen kann ich sie alle richtig, nur wenn ich den 21er rausnehme, scheint es ohne Probleme zu klappen.

IPPhoner2b

Also, was mir auffällt ist, dass diese Verzögerungen nur durch die Taster verursacht werden, und in den Dummys, die das Fahren der Rollos regeln.

Wenn ich die einzelnen Ausgänge direkt über das Web IF schalte, und dabei ist es egal, welchen der 4 Chips ich anspreche, ist wenn die Maustaste gerade unten ankommt, sofort die LED an, also da ist überhaupt keine Verzögerung, erst dann, wenn wirklich geschaltet werden soll, oder so.

Habe den selben Test auch nochmals mit den Include Dateien gemacht, und da ist es genauso, wie wenn alles in der großen Config steht.

Habe dann sogar die MCPs einzeln definiert, das funktioniert genauso, und es ändert sich überhaupt nix an der Geschwindigkeit, oder ich habe es nicht richtig gemacht, hier mal der Code:
###############################################################################
##      ZUR ERKLÄRUNG
# define chip RPII2C 1              #IODev für I2C Version 0 (alt) oder 1 (neu) definieren 
# define mcp_20 I2C_MCP23017 0x20   #MCP23017 definieren (0x20=Hardwareadresse)
# attr mcp_20 IODev chip            #IODev dem MCP23017 zuweisen
# attr mcp_20 OutputPorts A0,A1,A2  #Ports A0 bis A2 als Output definieren


#define chip RPII2C 1
#attr chip group MCP23017
#attr chip verbose 5

###############################################################################
##
##  MCP23017-0x20###
##
###############################################################################
define chip_20 RPII2C 1
attr chip_20 group MCP23017
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip_20
attr mcp_20 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 InterruptOut connected_active-low
attr mcp_20 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 group MCP23017
attr mcp_20 invert_input B0,B1,B2,B3,B4,B5,B6,B7
#
#  Interrupt A & B  ####
#  RPI_GPIO 14 ist der Eingangspin am Raspberry, um die Schalter einzulesen
define Interrupt20 RPI_GPIO 14
attr Interrupt20 active_low yes
attr Interrupt20 direction input
attr Interrupt20 group MCP23017
attr Interrupt20 interrupt both
attr Interrupt20 userReadings test {fhem ("get mcp_20")}
###############################################################################
##
##  MCP23017-0x21###
##
###############################################################################
define chip_21 RPII2C 1
attr chip_21 group MCP23017
define mcp_21 I2C_MCP23017 0x21
attr mcp_21 IODev chip_21
attr mcp_21 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_21 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_21 group MCP23017
###############################################################################
##
##  MCP23017-0x22###
##
###############################################################################
define chip_22 RPII2C 1
attr chip_22 group MCP23017
define mcp_22 I2C_MCP23017 0x22
attr mcp_22 IODev chip_22
attr mcp_22 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_22 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_22 group MCP23017

###############################################################################
##
##  MCP23017-0x24###
##
###############################################################################
define chip_24 RPII2C 1
attr chip_24 group MCP23017
define mcp_24 I2C_MCP23017 0x24
attr mcp_24 IODev chip_24
attr mcp_24 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_24 InterruptOut connected_active-low
attr mcp_24 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off
attr mcp_24 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_24 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_24 group MCP23017
attr mcp_24 invert_input B0,B1,B2,B3,B4,B5,B6,B7
#
###  Interrupt A & B  ####
#  RPI_GPIO 15 ist der Eingangspin am Raspberry, um die Schalter einzulesen
define Interrupt24 RPI_GPIO 15
attr Interrupt24 active_low yes
attr Interrupt24 direction input
attr Interrupt24 group MCP23017
attr Interrupt24 interrupt both
attr Interrupt24 userReadings test {fhem ("get mcp_24")}
###############################################################################


So war es vorher original:
###############################################################################
##      ZUR ERKLÄRUNG
# define chip RPII2C 1              #IODev für I2C Version 0 (alt) oder 1 (neu) definieren 
# define mcp_20 I2C_MCP23017 0x20   #MCP23017 definieren (0x20=Hardwareadresse)
# attr mcp_20 IODev chip            #IODev dem MCP23017 zuweisen
# attr mcp_20 OutputPorts A0,A1,A2  #Ports A0 bis A2 als Output definieren


define chip RPII2C 1
attr chip group MCP23017
#attr chip verbose 5

###############################################################################
##
##  MCP23017-0x20###
##
###############################################################################
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 InterruptOut connected_active-low
attr mcp_20 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 group MCP23017
attr mcp_20 invert_input B0,B1,B2,B3,B4,B5,B6,B7
#
#  Interrupt A & B  ####
#  RPI_GPIO 14 ist der Eingangspin am Raspberry, um die Schalter einzulesen
define Interrupt20 RPI_GPIO 14
attr Interrupt20 active_low yes
attr Interrupt20 direction input
attr Interrupt20 group MCP23017
attr Interrupt20 interrupt both
attr Interrupt20 userReadings test {fhem ("get mcp_20")}
###############################################################################
##
##  MCP23017-0x21###
##
###############################################################################
define mcp_21 I2C_MCP23017 0x21
attr mcp_21 IODev chip
attr mcp_21 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_21 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_21 group MCP23017
###############################################################################
##
##  MCP23017-0x22###
##
###############################################################################
define mcp_22 I2C_MCP23017 0x22
attr mcp_22 IODev chip
attr mcp_22 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_22 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_22 group MCP23017

###############################################################################
##
##  MCP23017-0x24###
##
###############################################################################
define mcp_24 I2C_MCP23017 0x24
attr mcp_24 IODev chip
attr mcp_24 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_24 InterruptOut connected_active-low
attr mcp_24 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off
attr mcp_24 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_24 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_24 group MCP23017
attr mcp_24 invert_input B0,B1,B2,B3,B4,B5,B6,B7
#
###  Interrupt A & B  ####
#  RPI_GPIO 15 ist der Eingangspin am Raspberry, um die Schalter einzulesen
define Interrupt24 RPI_GPIO 15
attr Interrupt24 active_low yes
attr Interrupt24 direction input
attr Interrupt24 group MCP23017
attr Interrupt24 interrupt both
attr Interrupt24 userReadings test {fhem ("get mcp_24")}
###############################################################################


Es ist aber egal, ob ich den 21er, oder den 22er, oder beide rausnehme, das Verhalten ist danach extrem langsam.

Langsam denke ich, dass es mit meiner gebauten Platine zusammenhängt, allerdings finde ich keinen Fehler im Aufbau, denn funktionieren tuts ja, wenn auch etwas langsamer.

Die Interrupt Pins der Chips 21 und 22 sind nicht in Benutzung, allerdings finde ich im "Apptime Log" immer was von bsp. Hash notify a21a7 usw, obwohl der Chip 21 überhaupt nicht genutzt wird in dem Script.

klausw

Das define <name> RPII2C 1 sollte nur 1x definiert werden.
Den Interrupt Eingang vom Pi würde ich nur auf eine Flanke setzen. Da sonst  auch beim Rücksetzen ein Interrupt ausgelöst wird.
In deinem vermutlich auf "rising". Oder ohne "active_low" auf "falling"

Beobachte doch mal in der Weboberfläche wie die Schaltereingänge reagieren, sobald du auf einen Knopf drückst.
Wenn du sofort eine Änderung siehst dann vermute ich das Problem in dem hoch_runterfahr notify

RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hallo Klaus,

Also im Web IF kommt beim schalten die Anzeige auch erst nach ca. 3-4 Sekunden, und dann kommt auch erst die Led.

Wenn ich den Interrupt nur auf "rising " setze, wird denn dann der Eingang auch wieder zurückgesetzt? Weil sonst würde die Rollosteuerung ja noch denken, dass der Eingang belegt ist, obwohl der Schalter längst auf neutral steht.

Mich wundert auch bei dem define für jeden Mcp einzeln, dass es sich genauso verhält, als wenn ich alle auf einmal gesetzt habe. Also ich kann keinen Unterschied feststellen. Werde es aber wieder zurückändern.

Ist jedenfalls merkwürdig, dass er, sobald ich 3 oder 4 MCPs definiert habe, dass dann auf einmal alles langsam wird, obwohl ja nur Ausgänge definiert sind, die aber nicht mal Verwendung finden. Und dann eben bei Apptime das Phänomen, dass der Hash für den nicht benötigten MCP da mit drin steht.

Über Web IF wie gesagt überhaupt keine Trägheit zu erkennen.

klausw

Zitat von: IPPhoner2b am 01 Dezember 2014, 18:18:27
Hallo Klaus,

Also im Web IF kommt beim schalten die Anzeige auch erst nach ca. 3-4 Sekunden, und dann kommt auch erst die Led.

in deinem rollokli steht folgendes:
fhem "define kli_down at +00:00:01 set aklir off-for-timer 5";
Das bedeutet, runter/hochfahren wird erst 1s später gestartet ...das führt schonmal zu mind 1s Zeitverzögerung.
Ist während der 3-4s die Weboberfläche nutzbar, oder hängt sie?

Zitat von: IPPhoner2b am 01 Dezember 2014, 18:18:27
Wenn ich den Interrupt nur auf "rising " setze, wird denn dann der Eingang auch wieder zurückgesetzt? Weil sonst würde die Rollosteuerung ja noch denken, dass der Eingang belegt ist, obwohl der Schalter längst auf neutral steht.
Der Int Ausgang nimmt im Interruptfall den eingestellten Pegel an. Schau einfach mal in das Datenblatt, da ist es beschrieben.
In deinem Fall (active_low) wird der Pegel im Falle eines Interrupts von Vcc auf 0V gezogen und bleibt dort, bis die Werte aus dem MCP gelesen werden. In diesem Moment geht der Pegel wieder hoch (was aber für dich uninteressant ist). Einfach gesagt: bei jeder Änderung an einem Interruptfähigen Eingangspin wird der Int_Out auf 0V gezogen.
Da du am Pi-GPIO auch active_low eingestellt hast, muss der Interrupt folglich auf "rising" stehen.
[/quote]

Zitat von: IPPhoner2b am 01 Dezember 2014, 18:18:27
Mich wundert auch bei dem define für jeden Mcp einzeln, dass es sich genauso verhält, als wenn ich alle auf einmal gesetzt habe. Also ich kann keinen Unterschied feststellen. Werde es aber wieder zurückändern.
es wundert mich nicht, die Befehle werden sequentiell ausgeführt, also kommen sich die Definitionen nicht ins Gehege. Aber es macht keinen Sinn und kann zu Problemen führen.
Zitat von: IPPhoner2b am 01 Dezember 2014, 18:18:27

Ist jedenfalls merkwürdig, dass er, sobald ich 3 oder 4 MCPs definiert habe, dass dann auf einmal alles langsam wird, obwohl ja nur Ausgänge definiert sind, die aber nicht mal Verwendung finden. Und dann eben bei Apptime das Phänomen, dass der Hash für den nicht benötigten MCP da mit drin steht.

Über Web IF wie gesagt überhaupt keine Trägheit zu erkennen.
Im Apptime stehen nur die Readingproxy drin, oder?
Das ist denke ich normal.

Nochmal zum mitmeißeln:
mit 2 MCP23017 Definitionen läuft alles normal?
sobald du eine dritte hinzufügst dann wird es langsam? In diesem Fall fügst du keine weiteren notify hinzu?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hi Klaus,

hatte das System gestern abgebaut (mein Vater war zu Besuch, und er soll davon ja noch nix mitbekommen  ::) ), werde es gleich aber wieder anschließen.

Also dass durch das Rollokli 1s verzögert wird, das ist mir klar bewusst. Aber wie du im letzten Absatz beschrieben hast, ich definiere nur den 3. oder 4. Chip dazu, und die dazugehörigen 16 bzw. 32 Ausgänge.

Mehr mache ich nicht. Und danach wirds langsam...

Da ich dafür noch keine Verwendung habe, habe ich auch noch keine zusätzlichen Notifys oder ähnliches eingesetzt. Aber bei 32 Ausgängen ists natürlich ne ganze Ecke an Code mehr, aber daran dürfte sich doch FHEM noch nicht aufhängen, wenn ich lese, was manche Leute hier für Configs haben.

Das ist alles, was ich hinzufüge:
define mcp_21 I2C_MCP23017 0x21
attr mcp_21 IODev chip
attr mcp_21 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_21 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_21 group MCP23017

define a21a0 readingsProxy mcp_21:PortA0
attr a21a0 alias Ausgang Chip21 Port A0
attr a21a0 devStateIcon aus:off an:on
attr a21a0 eventMap on:aus off:an
attr a21a0 group OutputPorts
attr a21a0 setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr a21a0 setList off on
attr a21a0 valueFn {($VALUE eq "on")?"off":"on"}

define a21a1 readingsProxy mcp_21:PortA1
attr a21a1 alias Ausgang Chip21 Port A1
attr a21a1 devStateIcon aus:off an:on
attr a21a1 eventMap on:aus off:an
attr a21a1 group OutputPorts
attr a21a1 setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr a21a1 setList off on
attr a21a1 valueFn {($VALUE eq "on")?"off":"on"}

define a21a2 readingsProxy mcp_21:PortA2
attr a21a2 alias Ausgang Chip21 Port A2
attr a21a2 devStateIcon aus:off an:on
attr a21a2 eventMap on:aus off:an
attr a21a2 group OutputPorts
attr a21a2 setFn {($CMD eq "on")?"PortA2 off":"PortA2 on"}
attr a21a2 setList off on
attr a21a2 valueFn {($VALUE eq "on")?"off":"on"}

define a21a3 readingsProxy mcp_21:PortA3
attr a21a3 alias Ausgang Chip21 Port A3
attr a21a3 devStateIcon aus:off an:on
attr a21a3 eventMap on:aus off:an
attr a21a3 group OutputPorts
attr a21a3 setFn {($CMD eq "on")?"PortA3 off":"PortA3 on"}
attr a21a3 setList off on
attr a21a3 valueFn {($VALUE eq "on")?"off":"on"}

define a21a4 readingsProxy mcp_21:PortA4
attr a21a4 alias Ausgang Chip21 Port A4
attr a21a4 devStateIcon aus:off an:on
attr a21a4 eventMap on:aus off:an
attr a21a4 group OutputPorts
attr a21a4 setFn {($CMD eq "on")?"PortA4 off":"PortA4 on"}
attr a21a4 setList off on
attr a21a4 valueFn {($VALUE eq "on")?"off":"on"}

define a21a5 readingsProxy mcp_21:PortA5
attr a21a5 alias Ausgang Chip21 Port A5
attr a21a5 devStateIcon aus:off an:on
attr a21a5 eventMap on:aus off:an
attr a21a5 group OutputPorts
attr a21a5 setFn {($CMD eq "on")?"PortA5 off":"PortA5 on"}
attr a21a5 setList off on
attr a21a5 valueFn {($VALUE eq "on")?"off":"on"}

define a21a6 readingsProxy mcp_21:PortA6
attr a21a6 alias Ausgang Chip21 Port A6
attr a21a6 devStateIcon aus:off an:on
attr a21a6 eventMap on:aus off:an
attr a21a6 group OutputPorts
attr a21a6 setFn {($CMD eq "on")?"PortA6 off":"PortA6 on"}
attr a21a6 setList off on
attr a21a6 valueFn {($VALUE eq "on")?"off":"on"}

define a21a7 readingsProxy mcp_21:PortA7
attr a21a7 alias Ausgang Chip21 Port A7
attr a21a7 devStateIcon aus:off an:on
attr a21a7 eventMap on:aus off:an
attr a21a7 group OutputPorts
attr a21a7 setFn {($CMD eq "on")?"PortA7 off":"PortA7 on"}
attr a21a7 setList off on
attr a21a7 valueFn {($VALUE eq "on")?"off":"on"}

define a21b0 readingsProxy mcp_21:PortB0
attr a21b0 alias Ausgang Chip21 Port B0
attr a21b0 devStateIcon aus:off an:on
attr a21b0 eventMap on:aus off:an
attr a21b0 group OutputPorts
attr a21b0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}
attr a21b0 setList off on
attr a21b0 valueFn {($VALUE eq "on")?"off":"on"}

define a21b1 readingsProxy mcp_21:PortB1
attr a21b1 alias Ausgang Chip21 Port B1
attr a21b1 devStateIcon aus:off an:on
attr a21b1 eventMap on:aus off:an
attr a21b1 group OutputPorts
attr a21b1 setFn {($CMD eq "on")?"PortB1 off":"PortB1 on"}
attr a21b1 setList off on
attr a21b1 valueFn {($VALUE eq "on")?"off":"on"}

define a21b2 readingsProxy mcp_21:PortB2
attr a21b2 alias Ausgang Chip21 Port B2
attr a21b2 devStateIcon aus:off an:on
attr a21b2 eventMap on:aus off:an
attr a21b2 group OutputPorts
attr a21b2 setFn {($CMD eq "on")?"PortB2 off":"PortB2 on"}
attr a21b2 setList off on
attr a21b2 valueFn {($VALUE eq "on")?"off":"on"}

define a21b3 readingsProxy mcp_21:PortB3
attr a21b3 alias Ausgang Chip21 Port B3
attr a21b3 devStateIcon aus:off an:on
attr a21b3 eventMap on:aus off:an
attr a21b3 group OutputPorts
attr a21b3 setFn {($CMD eq "on")?"PortB3 off":"PortB3 on"}
attr a21b3 setList off on
attr a21b3 valueFn {($VALUE eq "on")?"off":"on"}

define a21b4 readingsProxy mcp_21:PortB4
attr a21b4 alias Ausgang Chip21 Port B4
attr a21b4 devStateIcon aus:off an:on
attr a21b4 eventMap on:aus off:an
attr a21b4 group OutputPorts
attr a21b4 setFn {($CMD eq "on")?"PortB4 off":"PortB4 on"}
attr a21b4 setList off on
attr a21b4 valueFn {($VALUE eq "on")?"off":"on"}

define a21b5 readingsProxy mcp_21:PortB5
attr a21b5 alias Ausgang Chip21 Port B5
attr a21b5 devStateIcon aus:off an:on
attr a21b5 eventMap on:aus off:an
attr a21b5 group OutputPorts
attr a21b5 setFn {($CMD eq "on")?"PortB5 off":"PortB5 on"}
attr a21b5 setList off on
attr a21b5 valueFn {($VALUE eq "on")?"off":"on"}

define a21b6 readingsProxy mcp_21:PortB6
attr a21b6 alias Ausgang Chip21 Port B6
attr a21b6 devStateIcon aus:off an:on
attr a21b6 eventMap on:aus off:an
attr a21b6 group OutputPorts
attr a21b6 setFn {($CMD eq "on")?"PortB6 off":"PortB6 on"}
attr a21b6 setList off on
attr a21b6 valueFn {($VALUE eq "on")?"off":"on"}

define a21b7 readingsProxy mcp_21:PortB7
attr a21b7 alias Ausgang Chip21 Port B7
attr a21b7 devStateIcon aus:off an:on
attr a21b7 eventMap on:aus off:an
attr a21b7 group OutputPorts
attr a21b7 setFn {($CMD eq "on")?"PortB7 off":"PortB7 on"}
attr a21b7 setList off on
attr a21b7 valueFn {($VALUE eq "on")?"off":"on"}



define mcp_22 I2C_MCP23017 0x22
attr mcp_22 IODev chip
attr mcp_22 OnStartup A0=off,A1=off,A2=off,A3=off,A4=off,A5=off,A6=off,A7=off,B0=off,B1=off,B2=off,B3=off,B4=off,B5=off,B6=off,B7=off
attr mcp_22 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_22 group MCP23017

define a22a0 readingsProxy mcp_22:PortA0
attr a22a0 alias Ausgang Chip22 Port A0
attr a22a0 devStateIcon aus:off an:on
attr a22a0 eventMap on:aus off:an
attr a22a0 group OutputPorts
attr a22a0 setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr a22a0 setList off on
attr a22a0 valueFn {($VALUE eq "on")?"off":"on"}

define a22a1 readingsProxy mcp_22:PortA1
attr a22a1 alias Ausgang Chip22 Port A1
attr a22a1 devStateIcon aus:off an:on
attr a22a1 eventMap on:aus off:an
attr a22a1 group OutputPorts
attr a22a1 setFn {($CMD eq "on")?"PortA1 off":"PortA1 on"}
attr a22a1 setList off on
attr a22a1 valueFn {($VALUE eq "on")?"off":"on"}

define a22a2 readingsProxy mcp_22:PortA2
attr a22a2 alias Ausgang Chip22 Port A2
attr a22a2 devStateIcon aus:off an:on
attr a22a2 eventMap on:aus off:an
attr a22a2 group OutputPorts
attr a22a2 setFn {($CMD eq "on")?"PortA2 off":"PortA2 on"}
attr a22a2 setList off on
attr a22a2 valueFn {($VALUE eq "on")?"off":"on"}

define a22a3 readingsProxy mcp_22:PortA3
attr a22a3 alias Ausgang Chip22 Port A3
attr a22a3 devStateIcon aus:off an:on
attr a22a3 eventMap on:aus off:an
attr a22a3 group OutputPorts
attr a22a3 setFn {($CMD eq "on")?"PortA3 off":"PortA3 on"}
attr a22a3 setList off on
attr a22a3 valueFn {($VALUE eq "on")?"off":"on"}

define a22a4 readingsProxy mcp_22:PortA4
attr a22a4 alias Ausgang Chip22 Port A4
attr a22a4 devStateIcon aus:off an:on
attr a22a4 eventMap on:aus off:an
attr a22a4 group OutputPorts
attr a22a4 setFn {($CMD eq "on")?"PortA4 off":"PortA4 on"}
attr a22a4 setList off on
attr a22a4 valueFn {($VALUE eq "on")?"off":"on"}

define a22a5 readingsProxy mcp_22:PortA5
attr a22a5 alias Ausgang Chip22 Port A5
attr a22a5 devStateIcon aus:off an:on
attr a22a5 eventMap on:aus off:an
attr a22a5 group OutputPorts
attr a22a5 setFn {($CMD eq "on")?"PortA5 off":"PortA5 on"}
attr a22a5 setList off on
attr a22a5 valueFn {($VALUE eq "on")?"off":"on"}

define a22a6 readingsProxy mcp_22:PortA6
attr a22a6 alias Ausgang Chip22 Port A6
attr a22a6 devStateIcon aus:off an:on
attr a22a6 eventMap on:aus off:an
attr a22a6 group OutputPorts
attr a22a6 setFn {($CMD eq "on")?"PortA6 off":"PortA6 on"}
attr a22a6 setList off on
attr a22a6 valueFn {($VALUE eq "on")?"off":"on"}

define a22a7 readingsProxy mcp_22:PortA7
attr a22a7 alias Ausgang Chip22 Port A7
attr a22a7 devStateIcon aus:off an:on
attr a22a7 eventMap on:aus off:an
attr a22a7 group OutputPorts
attr a22a7 setFn {($CMD eq "on")?"PortA7 off":"PortA7 on"}
attr a22a7 setList off on
attr a22a7 valueFn {($VALUE eq "on")?"off":"on"}

define a22b0 readingsProxy mcp_22:PortB0
attr a22b0 alias Ausgang Chip22 Port B0
attr a22b0 devStateIcon aus:off an:on
attr a22b0 eventMap on:aus off:an
attr a22b0 group OutputPorts
attr a22b0 setFn {($CMD eq "on")?"PortB0 off":"PortB0 on"}
attr a22b0 setList off on
attr a22b0 valueFn {($VALUE eq "on")?"off":"on"}

define a22b1 readingsProxy mcp_22:PortB1
attr a22b1 alias Ausgang Chip22 Port B1
attr a22b1 devStateIcon aus:off an:on
attr a22b1 eventMap on:aus off:an
attr a22b1 group OutputPorts
attr a22b1 setFn {($CMD eq "on")?"PortB1 off":"PortB1 on"}
attr a22b1 setList off on
attr a22b1 valueFn {($VALUE eq "on")?"off":"on"}

define a22b2 readingsProxy mcp_22:PortB2
attr a22b2 alias Ausgang Chip22 Port B2
attr a22b2 devStateIcon aus:off an:on
attr a22b2 eventMap on:aus off:an
attr a22b2 group OutputPorts
attr a22b2 setFn {($CMD eq "on")?"PortB2 off":"PortB2 on"}
attr a22b2 setList off on
attr a22b2 valueFn {($VALUE eq "on")?"off":"on"}

define a22b3 readingsProxy mcp_22:PortB3
attr a22b3 alias Ausgang Chip22 Port B3
attr a22b3 devStateIcon aus:off an:on
attr a22b3 eventMap on:aus off:an
attr a22b3 group OutputPorts
attr a22b3 setFn {($CMD eq "on")?"PortB3 off":"PortB3 on"}
attr a22b3 setList off on
attr a22b3 valueFn {($VALUE eq "on")?"off":"on"}

define a22b4 readingsProxy mcp_22:PortB4
attr a22b4 alias Ausgang Chip22 Port B4
attr a22b4 devStateIcon aus:off an:on
attr a22b4 eventMap on:aus off:an
attr a22b4 group OutputPorts
attr a22b4 setFn {($CMD eq "on")?"PortB4 off":"PortB4 on"}
attr a22b4 setList off on
attr a22b4 valueFn {($VALUE eq "on")?"off":"on"}

define a22b5 readingsProxy mcp_22:PortB5
attr a22b5 alias Ausgang Chip22 Port B5
attr a22b5 devStateIcon aus:off an:on
attr a22b5 eventMap on:aus off:an
attr a22b5 group OutputPorts
attr a22b5 setFn {($CMD eq "on")?"PortB5 off":"PortB5 on"}
attr a22b5 setList off on
attr a22b5 valueFn {($VALUE eq "on")?"off":"on"}

define a22b6 readingsProxy mcp_22:PortB6
attr a22b6 alias Ausgang Chip22 Port B6
attr a22b6 devStateIcon aus:off an:on
attr a22b6 eventMap on:aus off:an
attr a22b6 group OutputPorts
attr a22b6 setFn {($CMD eq "on")?"PortB6 off":"PortB6 on"}
attr a22b6 setList off on
attr a22b6 valueFn {($VALUE eq "on")?"off":"on"}

define a22b7 readingsProxy mcp_22:PortB7
attr a22b7 alias Ausgang Chip22 Port B7
attr a22b7 devStateIcon aus:off an:on
attr a22b7 eventMap on:aus off:an
attr a22b7 group OutputPorts
attr a22b7 setFn {($CMD eq "on")?"PortB7 off":"PortB7 on"}
attr a22b7 setList off on
attr a22b7 valueFn {($VALUE eq "on")?"off":"on"}

klausw

Dann weiss ich leider auch nicht weiter. Seltsam ist es auf jeden Fall.
Was du versuchen kannst ist, ausschließlich den 3. und 4. Chip zu verwenden und die anderen beiden nicht (falls du es nicht schon gemacht hast..langsam habe ich keinen überblick mehr ;)).
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

#37
Würde ich gerne testen, nur habe ich alleine schon auf der Hardware seite keine Eingänge für die beiden Chips vorgesehen, sondern schon alles mit Sperrdioden usw für die Ausgänge ausgestattet.

Das hier ist das Log von Apptime total, wenn ich das Rollo im Flur öffnen möchte.
Eigentlich wird nur Chip 20 benötigt:
tmr-at_Exec      HASH(0x2ea5b90)   1997      1     1997  1997.00      6 HASH(fl_oben)
                      act_on_Rollofl          notify_Exec   1932      1     1932  1932.00      0 HASH(act_on_Rollofl); HASH(Rollofl)
         FHEMWEB:192.168.47.51:51158              FW_Read    748      4      757   189.25      0 HASH(FHEMWEB:192.168.47.51:51158)
         FHEMWEB:192.168.47.51:51159              FW_Read    532      6      547    91.17      0 HASH(FHEMWEB:192.168.47.51:51159)
                                aflh    readingsProxy_Set    170      3      172    57.33      0 HASH(aflh); aflh; on
                 tmr-SetExtensionsFn SE aflh off-for-timer    171      1      171   171.00   1318 SE aflh off-for-timer
                              mcp_20     I2C_MCP23017_Set    166      3      168    56.00      0 HASH(mcp_20); mcp_20; PortA4; off
                                chip         RPII2C_Write    118      2      161    80.50      0 HASH(chip); HASH(0x2e99698)
                              mcp_20  I2C_MCP23017_I2CRec    113      2      152    76.00      0 HASH(mcp_20); HASH(0x2e99698)
                                aflh readingsProxy_Notify     40     54       77     1.43      0 HASH(aflh); HASH(global)
                               a21a0 readingsProxy_Notify     39     54       39     0.72      0 HASH(a21a0); HASH(global)
                               a21b6 readingsProxy_Notify     39     54       39     0.72      0 HASH(a21b6); HASH(global)
                               a24a7 readingsProxy_Notify     38     54       39     0.72      0 HASH(a24a7); HASH(global)
                               a21a6 readingsProxy_Notify     38     54       38     0.70      0 HASH(a21a6); HASH(global)
                               a21a7 readingsProxy_Notify     38     54       38     0.70      0 HASH(a21a7); HASH(global)
                               a21b0 readingsProxy_Notify     38     54       38     0.70      0 HASH(a21b0); HASH(global)
                               a21b3 readingsProxy_Notify     38     54       38     0.70      0 HASH(a21b3); HASH(global)
                               a21b4 readingsProxy_Notify     38     54       38     0.70      0 HASH(a21b4); HASH(global)
                               a21b5 readingsProxy_Notify     38     54       38     0.70      0 HASH(a21b5); HASH(global)
                               a21b7 readingsProxy_Notify     38     54       38     0.70      0 HASH(a21b7); HASH(global)
                               a22a1 readingsProxy_Notify     38     54       38     0.70      0 HASH(a22a1); HASH(global)



Habe grade nochmal neu gestartet, und habe die Chips 21 und 22 entfernt, so sieht dann das Apptime total aus:
                               name             function    max  count    total  average maxDly
                             chip_20         RPII2C_Write   1325     12     1763   146.92      0 HASH(chip_20); HASH(0x2830ab0)
                     act_on_Rollokre          notify_Exec   1181      2     1742   871.00      0 HASH(act_on_Rollokre); HASH(Rollokre)
                              mcp_20  I2C_MCP23017_I2CRec   1320     12     1714   142.83      0 HASH(mcp_20); HASH(0x2830ab0)
                         Interrupt20      RPI_GPIO_Except   1356      4     1617   404.25      0 HASH(Interrupt20)
                              mcp_20     I2C_MCP23017_Get   1326      4     1495   373.75      0 HASH(mcp_20); mcp_20
                               skrer readingsProxy_Notify   1248     90     1296    14.40      0 HASH(skrer); HASH(mcp_20)
                           akrerhoch          notify_Exec   1216      2     1222   611.00      0 HASH(akrerhoch); HASH(skrer)
                            Rollokre            dummy_Set   1207      3     1207   402.33      0 HASH(Rollokre); Rollokre; runter
                         tmr-at_Exec      HASH(0x27e7308)    673      1      673   673.00    208 HASH(kre_down)
                         tmr-at_Exec      HASH(0x282f180)    587      1      587   587.00      3 HASH(kre_clos)
         FHEMWEB:192.168.47.51:51272            FW_Notify      8     90      521     5.79      0 HASH(FHEMWEB:192.168.47.51:51272); HASH(akrer)
                               akrer    readingsProxy_Set    134     10      419    41.90      0 HASH(akrer); akrer; off-for-timer; 15
                              mcp_20     I2C_MCP23017_Set    126     16      300    18.75      0 HASH(mcp_20); mcp_20; PortA3; on
                               akrer readingsProxy_Notify     32     90      178     1.98      0 HASH(akrer); HASH(mcp_20)
                 tmr-SetExtensionsFn SE akrer off-for-timer    128      1      128   128.00      3 SE akrer off-for-timer
                               a24a7 readingsProxy_Notify     31     90      118     1.31      0 HASH(a24a7); HASH(global)
                               aklih readingsProxy_Notify     29     90      117     1.30      0 HASH(aklih); HASH(global)
                               a24a0 readingsProxy_Notify     29     90      116     1.29      0 HASH(a24a0); HASH(global)
                               a24a1 readingsProxy_Notify     29     90      116     1.29      0 HASH(a24a1); HASH(global)
                               a24a2 readingsProxy_Notify     29     90      116     1.29      0 HASH(a24a2); HASH(global)
                               a24a3 readingsProxy_Notify     29     90      116     1.29      0 HASH(a24a3); HASH(global)

klausw

Ich kann mit dem Buchstabensalat leider nix anfangen  ::)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

#39
Wie meinst du Buchstabensalat? Das ist doch eigentlich sehr gut lesbar, ähnlich wie eine Exceltabelle, zumindest am PC, wie es sonst aussieht kann ich leider nicht sagen, jedenfalls habe ich grade den Interrupt von "both" auf "rising" umgestellt, und jetzt ists richtig extrem geworden, jetzt lagt das Teil bis zu 8 oder 9 sekunden, wenn ich den Schalter betätige.

Und das Web IF reagiert in der Zeit auch nicht, konnte ich ja grade gut testen, habe 2 Ausgänge per Mausklick gesetzt, und dann als dass Rollo fertig war, hat er auch sofort die anderen beiden Ausgänge gesetzt.

Ich mach noch mal etwas "Buchstabensalat" rein, vielleicht kannst du es ja irgendwann mal betrachten *g*
                               name             function    max  count    total  average maxDly
                                chip         RPII2C_Write   5540     54    16895   312.87      0 HASH(chip); HASH(0x2b949a0)
                              mcp_20  I2C_MCP23017_I2CRec   5534     38    16606   437.00      0 HASH(mcp_20); HASH(0x2b949a0)
                         Interrupt20      RPI_GPIO_Except   5597      6    15986  2664.33      0 HASH(Interrupt20)
                              mcp_20     I2C_MCP23017_Get   5540      6    15661  2610.17      0 HASH(mcp_20); mcp_20
                     act_on_Rollokre          notify_Exec   5308      4    14819  3704.75      0 HASH(act_on_Rollokre); HASH(Rollokre)
                               skrer readingsProxy_Notify   5414    595    10275    17.27      0 HASH(skrer); HASH(mcp_20)
                           akrerhoch          notify_Exec   5361      4    10043  2510.75      0 HASH(akrerhoch); HASH(skrer)
                            Rollokre            dummy_Set   5352     13    10012   770.15      0 HASH(Rollokre); Rollokre; runter
                               sklir readingsProxy_Notify   4729    595     4813     8.09      0 HASH(sklir); HASH(mcp_20)
                           aklirhoch          notify_Exec   4680      2     4687  2343.50      0 HASH(aklirhoch); HASH(sklir)
                            Rollokli            dummy_Set   4671      7     4671   667.29      0 HASH(Rollokli); Rollokli; runter
                     act_on_Rollokli          notify_Exec   4631      1     4631  4631.00      0 HASH(act_on_Rollokli); HASH(Rollokli)
         FHEMWEB:192.168.47.51:51368            FW_Notify     14    590     3793     6.43      0 HASH(FHEMWEB:192.168.47.51:51368); HASH(aklir)
                         tmr-at_Exec      HASH(0x2ac6f98)   2800      1     2800  2800.00   4390 HASH(kre_down)
                         tmr-at_Exec      HASH(0x2a2edd0)   2656      1     2656  2656.00      3 HASH(kre_clos)
                         tmr-at_Exec      HASH(0x2bb7fb8)   2459      1     2459  2459.00   3693 HASH(kli_down)
                         tmr-at_Exec      HASH(0x2baa118)   2455      1     2455  2455.00   3680 HASH(kre_down)
                         tmr-at_Exec      HASH(0x2bbb0f0)   2324      1     2324  2324.00      4 HASH(kre_clos)
                               akrer    readingsProxy_Set    219     34     1306    38.41      0 HASH(akrer); akrer; off-for-timer; 15
         FHEMWEB:192.168.47.51:51368              FW_Read    725     17     1300    76.47      0 HASH(FHEMWEB:192.168.47.51:51368)
                              mcp_20     I2C_MCP23017_Set    212     53     1157    21.83      0 HASH(mcp_20); mcp_20; PortA3; on


Oder kann ich hier auch ein Bild anhängen? Dann mache ich einen Screenshot davon


:EDITH:

Noch etwas, ist doch richtig, dass ich die 2 Chips mit ihren Eingängen an unterschiedliche Pins des RPi setze, oder?
Habe einen auf Port 14, und den anderen auf Port 15
Und diese dann jeweils Interrupt20 bzw Interrupt24 genannt, ist doch richtig so, oder?


#  RPI_GPIO 14 ist der Eingangspin am Raspberry, um die Schalter einzulesen
define Interrupt20 RPI_GPIO 14
attr Interrupt20 active_low yes
attr Interrupt20 direction input
attr Interrupt20 group MCP23017
#attr Interrupt20 interrupt both
attr Interrupt20 interrupt rising
attr Interrupt20 userReadings test {fhem ("get mcp_20")}

#  RPI_GPIO 15 ist der Eingangspin am Raspberry, um die Schalter einzulesen
define Interrupt24 RPI_GPIO 15
attr Interrupt24 active_low yes
attr Interrupt24 direction input
attr Interrupt24 group MCP23017
#attr Interrupt24 interrupt both
attr Interrupt24 interrupt rising
attr Interrupt24 userReadings test {fhem ("get mcp_24")}



klausw

Zitat von: IPPhoner2b am 02 Dezember 2014, 17:34:32
Würde ich gerne testen, nur habe ich alleine schon auf der Hardware seite keine Eingänge für die beiden Chips vorgesehen, sondern schon alles mit Sperrdioden usw für die Ausgänge ausgestattet.
Das macht doch nix, du kannst es trotzdem so konfugurieren wie deine 0x20.
Die Bedienung geht dann halt nur über das WebIf.

Mit Buchstabensalat meinte ich, das ich damit nix anfangen kann ...sind das millisekunden?, wie sollte es aussehen?...

Zitat von: IPPhoner2b am 02 Dezember 2014, 18:06:06
...jedenfalls habe ich grade den Interrupt von "both" auf "rising" umgestellt, und jetzt ists richtig extrem geworden, jetzt lagt das Teil bis zu 8 oder 9 sekunden, wenn ich den Schalter betätige.

Und das Web IF reagiert in der Zeit auch nicht, konnte ich ja grade gut testen, habe 2 Ausgänge per Mausklick gesetzt, und dann als dass Rollo fertig war, hat er auch sofort die anderen beiden Ausgänge gesetzt.

Das wird ja immer schlimmer.
Was auffällig ist: act_on_Rollo.. dauert recht lang in deinem letzten Beispiel und im ersten deines vorletzten Posts.
Die Interruptverarbeitung dauert auch recht lang.
Auch die Menge an counts ist komisch, wie oft hast du draufgedrückt? Nicht das da irgendeine Endlosschleife drin ist.

2 GPIOs als IntEingänge zu nutzen ist sinnvoll. Dann muss du immer im Interruptfall immer nur einen Chip auslesen.
Versuche spaßenshalber mal "attr Interrupt24 interrupt falling" In diesem Fall dürfte ja beim Tastendruck nix mehr passieren.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

#41
Habe den Interrupt auf falling gestellt, und wie vorhergesagt, es tat sich nix.

Über das Web IF habe ich ja komischerweise keine Probleme, die Ausgänge schnell zu setzen.
Habe mal beide Chips (21+22) aus dem Sockel gezogen, aber es bleibt so langsam, also an dem Teil kann es scheinbar auch nicht liegen.

Und nein, ich habe nicht wie ein Irrer an meinem Taster rumgedrückt, nur jeweils 1x  ::) ;D

So, habe jetzt wieder auf both gestellt, ändert sich irgendwie nix, (habe ich doch noch auf rising stehen ) ist immer noch Scharch lahm, also da liegen wirklich Sekunden dazwischen, Gehe davon aus, dass es sich um Millisekunden handelt.
                                name             function    max  count    total  average maxDly
                                chip         RPII2C_Write   4807     49    10931   223.08      0 HASH(chip); HASH(0x141e080)
                              mcp_20  I2C_MCP23017_I2CRec   4801     33    10658   322.97      0 HASH(mcp_20); HASH(0x141e080)
                         Interrupt20      RPI_GPIO_Except   4853      8    10481  1310.12      0 HASH(Interrupt20)
                              mcp_20     I2C_MCP23017_Get   4807      9    10152  1128.00      0 HASH(mcp_20); mcp_20
                     act_on_Rollokli          notify_Exec   4594      2     6855  3427.50      0 HASH(act_on_Rollokli); HASH(Rollokli)
                               skrer readingsProxy_Notify   4709    385     4784    12.43      0 HASH(skrer); HASH(mcp_20)
                               sklir readingsProxy_Notify   4692    385     4765    12.38      0 HASH(sklir); HASH(mcp_20)
                           akrerhoch          notify_Exec   4660      2     4667  2333.50      0 HASH(akrerhoch); HASH(skrer)
                            Rollokre            dummy_Set   4652      3     4652  1550.67      0 HASH(Rollokre); Rollokre; runter
                           aklirhoch          notify_Exec   4644      2     4651  2325.50      0 HASH(aklirhoch); HASH(sklir)
                            Rollokli            dummy_Set   4635      4     4635  1158.75      0 HASH(Rollokli); Rollokli; runter
                     act_on_Rollokre          notify_Exec   4611      1     4611  4611.00      0 HASH(act_on_Rollokre); HASH(Rollokre)
         FHEMWEB:192.168.47.51:51636              FW_Read   2992     37     3472    93.84      0 HASH(FHEMWEB:192.168.47.51:51636)
                         tmr-at_Exec      HASH(0x13c4208)   2435      1     2435  2435.00   3655 HASH(kli_down)
                         tmr-at_Exec      HASH(0x14346c0)   2433      1     2433  2433.00   3859 HASH(kre_down)
         FHEMWEB:192.168.47.51:51652            FW_Notify      8    382     2429     6.36      0 HASH(FHEMWEB:192.168.47.51:51652); HASH(a21a2)
                         tmr-at_Exec      HASH(0x14095f8)   2302      1     2302  2302.00      5 HASH(kli_clos)
                              mcp_20     I2C_MCP23017_Set    187     29      662    22.83      0 HASH(mcp_20); mcp_20; PortA3; on
                               aklir    readingsProxy_Set    193     14      607    43.36      0 HASH(aklir); aklir; off-for-timer; 15
         FHEMWEB:192.168.47.51:51652              FW_Read    521      2      524   262.00      0 HASH(FHEMWEB:192.168.47.51:51652)
                               akrer    readingsProxy_Set    194     12      420    35.00      0 HASH(akrer); akrer; off-for-timer; 15


Und so sieht das gleiche aus, wenn ich in der Config nur die Chips 20 + 24 definiert habe:
                                name             function    max  count    total  average maxDly
                                chip         RPII2C_Write   1336     20     3400   170.00      0 HASH(chip); HASH(0x14a4ad0)
                              mcp_20  I2C_MCP23017_I2CRec   1331     20     3313   165.65      0 HASH(mcp_20); HASH(0x14a4ad0)
                         Interrupt20      RPI_GPIO_Except   1369      4     2984   746.00      0 HASH(Interrupt20)
                              mcp_20     I2C_MCP23017_Get   1337      4     2854   713.50      0 HASH(mcp_20); mcp_20
                     act_on_Rollokli          notify_Exec   1191      2     1758   879.00      0 HASH(act_on_Rollokli); HASH(Rollokli)
                     act_on_Rollokre          notify_Exec   1190      2     1756   878.00      0 HASH(act_on_Rollokre); HASH(Rollokre)
                               sklir readingsProxy_Notify   1258    172     1314     7.64      0 HASH(sklir); HASH(mcp_20)
                               skrer readingsProxy_Notify   1257    172     1313     7.63      0 HASH(skrer); HASH(mcp_20)
                           aklirhoch          notify_Exec   1225      2     1231   615.50      0 HASH(aklirhoch); HASH(sklir)
                           akrerhoch          notify_Exec   1224      2     1230   615.00      0 HASH(akrerhoch); HASH(skrer)
                            Rollokli            dummy_Set   1217      5     1217   243.40      0 HASH(Rollokli); Rollokli; runter
                            Rollokre            dummy_Set   1216      5     1216   243.20      0 HASH(Rollokre); Rollokre; runter
         FHEMWEB:192.168.47.51:51675            FW_Notify      8    172     1052     6.12      0 HASH(FHEMWEB:192.168.47.51:51675); HASH(a24a0)
                         tmr-at_Exec      HASH(0x14a1358)    678      1      678   678.00    218 HASH(kre_down)
                         tmr-at_Exec      HASH(0x1499e88)    677      1      677   677.00    223 HASH(kli_down)
                              mcp_20     I2C_MCP23017_Set    126     30      598    19.93      0 HASH(mcp_20); mcp_20; PortA3; off
                         tmr-at_Exec      HASH(0x13be510)    593      1      593   593.00      2 HASH(kli_clos)
                         tmr-at_Exec      HASH(0x14a0d28)    592      1      592   592.00      2 HASH(kre_clos)
         FHEMWEB:192.168.47.51:51674              FW_Read    437      7      457    65.29      0 HASH(FHEMWEB:192.168.47.51:51674)
                               akrer    readingsProxy_Set    132     16      427    26.69      0 HASH(akrer); akrer; off-for-timer; 15
                               aklir    readingsProxy_Set    132     16      426    26.62      0 HASH(aklir); aklir; off-for-timer; 15

IPPhoner2b

So, habe jetzt mal von Chip 22, also der auch immer Probleme macht, nur die Bank A zusätzlich freigegeben, und selbst da erhöht sich die Zeit schon, zwar noch nicht so extrem, aber merklich:
                                name             function    max  count    total  average maxDly
                         Interrupt20      RPI_GPIO_Except   2085     14     7763   554.50      0 HASH(Interrupt20)
                                chip         RPII2C_Write   2051     36     7747   215.19      0 HASH(chip); HASH(0x1767c68)
                              mcp_20  I2C_MCP23017_I2CRec   2044     36     7578   210.50      0 HASH(mcp_20); HASH(0x1767c68)
                              mcp_20     I2C_MCP23017_Get   2051     14     7271   519.36      0 HASH(mcp_20); mcp_20
                            Rollokre            dummy_Set   1913      4     2909   727.25      0 HASH(Rollokre); Rollokre; runter
                            Rollokli            dummy_Set   1910      4     2905   726.25      0 HASH(Rollokli); Rollokli; runter
                     act_on_Rollokre          notify_Exec   1883      2     2849  1424.50      0 HASH(act_on_Rollokre); HASH(Rollokre)
                     act_on_Rollokli          notify_Exec   1880      2     2844  1422.00      0 HASH(act_on_Rollokli); HASH(Rollokli)
                               skrer readingsProxy_Notify   1960    266     2023     7.61      0 HASH(skrer); HASH(mcp_20)
                               sklir readingsProxy_Notify   1956    266     2018     7.59      0 HASH(sklir); HASH(mcp_20)
                           akrerhoch          notify_Exec   1922      2     1928   964.00      0 HASH(akrerhoch); HASH(skrer)
                           aklirhoch          notify_Exec   1919      2     1925   962.50      0 HASH(aklirhoch); HASH(sklir)
         FHEMWEB:192.168.47.51:50114            FW_Notify      8    266     1578     5.93      0 HASH(FHEMWEB:192.168.47.51:50114); HASH(a22a7)
                               skreh readingsProxy_Notify   1042    266     1105     4.15      0 HASH(skreh); HASH(mcp_20)
                               sklih readingsProxy_Notify   1040    266     1100     4.14      0 HASH(sklih); HASH(mcp_20)
                         tmr-at_Exec      HASH(0x17f3ae0)   1038      1     1038  1038.00    919 HASH(kre_down)
                         tmr-at_Exec      HASH(0x12d8e00)   1037      1     1037  1037.00    924 HASH(kli_down)
                           akrehstop          notify_Exec   1004      2     1010   505.00      0 HASH(akrehstop); HASH(skreh)
                           aklihstop          notify_Exec   1003      2     1009   504.50      0 HASH(aklihstop); HASH(sklih)
                              mcp_20     I2C_MCP23017_Set    144     45      562    12.49      0 HASH(mcp_20); mcp_20; PortA3; on
                               aklir    readingsProxy_Set    149     16      438    27.38      0 HASH(aklir); aklir; off-for-timer; 15



Und so siehts dann aus, wenn 3 Chips an sind (20,21 und 24):
                                name             function    max  count    total  average maxDly
                                chip         RPII2C_Write   2896     35    10393   296.94      0 HASH(chip); HASH(0x181a068)
                         Interrupt20      RPI_GPIO_Except   2936     13    10378   798.31      0 HASH(Interrupt20)
                              mcp_20  I2C_MCP23017_I2CRec   2891     35    10213   291.80      0 HASH(mcp_20); HASH(0x181a068)
                              mcp_20     I2C_MCP23017_Get   2897     13     9864   758.77      0 HASH(mcp_20); mcp_20
                            Rollokli            dummy_Set   2743      4     4146  1036.50      0 HASH(Rollokli); Rollokli; runter
                            Rollokre            dummy_Set   2732      4     4137  1034.25      0 HASH(Rollokre); Rollokre; runter
                     act_on_Rollokli          notify_Exec   2709      2     4079  2039.50      0 HASH(act_on_Rollokli); HASH(Rollokli)
                     act_on_Rollokre          notify_Exec   2697      2     4069  2034.50      0 HASH(act_on_Rollokre); HASH(Rollokre)
                               sklir readingsProxy_Notify   2794    330     2861     8.67      0 HASH(sklir); HASH(mcp_20)
                               skrer readingsProxy_Notify   2783    330     2850     8.64      0 HASH(skrer); HASH(mcp_20)
                           aklirhoch          notify_Exec   2751      2     2758  1379.00      0 HASH(aklirhoch); HASH(sklir)
                           akrerhoch          notify_Exec   2740      2     2747  1373.50      0 HASH(akrerhoch); HASH(skrer)
         FHEMWEB:192.168.47.51:50138            FW_Notify      9    330     2050     6.21      0 HASH(FHEMWEB:192.168.47.51:50138); HASH(a22b6)
                               skreh readingsProxy_Notify   1456    330     1524     4.62      0 HASH(skreh); HASH(mcp_20)
                               sklih readingsProxy_Notify   1454    330     1519     4.60      0 HASH(sklih); HASH(mcp_20)
                         tmr-at_Exec      HASH(0x1835b90)   1460      1     1460  1460.00   1741 HASH(kre_down)
                         tmr-at_Exec      HASH(0x17cefd0)   1458      1     1458  1458.00   1756 HASH(kli_down)
                           akrehstop          notify_Exec   1414      2     1420   710.00      0 HASH(akrehstop); HASH(skreh)
                           aklihstop          notify_Exec   1412      2     1419   709.50      0 HASH(aklihstop); HASH(sklih)
                              mcp_20     I2C_MCP23017_Set    159     44      606    13.77      0 HASH(mcp_20); mcp_20; PortA1; on
                               aklir    readingsProxy_Set    166     16      479    29.94      0 HASH(aklir); aklir; off-for-timer; 15


So, und habe jetzt noch zum testen den 24er Chip komplett deaktiviert, und somit nur Chips 20+22 aktiviert gehabt:
                                name             function    max  count    total  average maxDly
                         Interrupt20      RPI_GPIO_Except   1829     15     6913   460.87      0 HASH(Interrupt20)
                                chip         RPII2C_Write   1799     37     6887   186.14      0 HASH(chip); HASH(0x18c50d8)
                              mcp_20  I2C_MCP23017_I2CRec   1794     37     6719   181.59      0 HASH(mcp_20); HASH(0x18c50d8)
                              mcp_20     I2C_MCP23017_Get   1799     15     6454   430.27      0 HASH(mcp_20); mcp_20
                            Rollokli            dummy_Set   1677      4     2563   640.75      0 HASH(Rollokli); Rollokli; runter
                            Rollokre            dummy_Set   1677      4     2554   638.50      0 HASH(Rollokre); Rollokre; runter
                     act_on_Rollokli          notify_Exec   1651      2     2512  1256.00      0 HASH(act_on_Rollokli); HASH(Rollokli)
                     act_on_Rollokre          notify_Exec   1652      2     2504  1252.00      0 HASH(act_on_Rollokre); HASH(Rollokre)
                               sklir readingsProxy_Notify   1718    270     1779     6.59      0 HASH(sklir); HASH(mcp_20)
                               skrer readingsProxy_Notify   1719    270     1776     6.58      0 HASH(skrer); HASH(mcp_20)
                           akrerhoch          notify_Exec   1685      2     1691   845.50      0 HASH(akrerhoch); HASH(skrer)
                           aklirhoch          notify_Exec   1684      2     1690   845.00      0 HASH(aklirhoch); HASH(sklir)
         FHEMWEB:192.168.47.51:50176            FW_Notify      9    270     1633     6.05      0 HASH(FHEMWEB:192.168.47.51:50176); HASH(rollo_wz)
                               sklih readingsProxy_Notify    928    270      984     3.64      0 HASH(sklih); HASH(mcp_20)
                               skreh readingsProxy_Notify    919    270      975     3.61      0 HASH(skreh); HASH(mcp_20)
                         tmr-at_Exec      HASH(0x18ad4e0)    908      1      908   908.00    737 HASH(kli_down)
                         tmr-at_Exec      HASH(0x1859538)    907      1      907   907.00    673 HASH(kre_down)
                           aklihstop          notify_Exec    894      2      900   450.00      0 HASH(aklihstop); HASH(sklih)
                           akrehstop          notify_Exec    885      2      891   445.50      0 HASH(akrehstop); HASH(skreh)
                              mcp_20     I2C_MCP23017_Set    126     46      519    11.28      0 HASH(mcp_20); mcp_20; PortA1; on
                               aklir    readingsProxy_Set    133     16      396    24.75      0 HASH(aklir); aklir; off-for-timer; 15

IPPhoner2b

Hallo Zusammen,

habe mal wieder ein paar Fragen.
Habe ein paar Homematic sachen mit meiner Fhem installation gekoppelt, klappt auch soweit ganz gut, also ich kann über z.B. eine Fernbedienung alle Rollos fahren lassen usw.

Jetzt habe ich nur folgendes Problem, ich möchte über z.B. eine Taste die Rollos runterfahren lassen, und wenn man sich z.B. verdrückt, sollen über eine andere Taste alle Rollos gestoppt werden. Allerdings klappt das noch nicht so, denn der Befehlt wird irgendwie erst später abgearbeitet. Wie könnte man das umändern?

Momentan habe ich es über ein Notify für die einzelnen Taster gemacht. Wollte es erst per DOIF machen, allerdings habe ich es nicht hinbekommen, die einzelnen Timer zu löschen, er sagte, der Befehlt ist nicht bekannt.

Habe schon dran gedacht, per "Structure" Befehl die Rollos auf einmal zu starten, aber ich möchte eigentlich gerne, dass die Rollos in kurzen Abständen hintereinander fahren.

Hier mal die Version der Notifys:
define taste_7_kurz notify fb8_Btn_07:Short.* {\
    fhem ("delete next.*") if (Value("next.*") ne "");;\
{\
    fhem "define next_wz at +00:00:01 set Rollowz runter";;\
    fhem "define next_ezli at +00:00:04 set Rolloezli runter";;\
    fhem "define next_kli at +00:00:12 set Rollokli runter";;\
    fhem "define next_kre at +00:00:15 set Rollokre runter";;\
    fhem "define next_fl at +00:00:18 set Rollofl runter";;\
    fhem "define next_gwc at +00:00:21 set Rollogwc runter";;\
    fhem "define next_bad at +00:00:24 set Rollobad runter";;\
    fhem "define next_sz at +00:00:27 set Rollosz runter";;\
    fhem "define next_kz at +00:00:30 set Rollokz runter";;\
    fhem "define next_bz at +00:00:33 set Rollobz runter";;\
}\
}

define taste_8 notify fb8_Btn_08 {\
    fhem ("delete next.*") if (Value("next.*") ne "");;\
{\
    fhem "set Rollowz stop";;\
    fhem "set Rolloezli stop";;\
    fhem "set Rollokli stop";;\
    fhem "set Rollokre stop";;\
    fhem "set Rollofl stop";;\
    fhem "set Rollogwc stop";;\
    fhem "set Rollobad stop";;\
    fhem "set Rollosz stop";;\
    fhem "set Rollokz stop";;\
    fhem "set Rollobz stop";;\
    }\
}


Und das hier war die Version mit den DOIFs, allerdings habe ich dort Probleme, die Timer zu löschen:
define taste_8_kurz DOIF ([fb8_Btn_08] =~ "Short")\
(set Rollowz hoch , \
define next1 at +00:00:03 set Rolloezli hoch , \
define next4 at +00:00:11 set Rollokli hoch , \
define next5 at +00:00:14 set Rollokre hoch , \
define next6 at +00:00:17 set Rollofl hoch , \
define next7 at +00:00:20 set Rollogwc hoch , \
define next8 at +00:00:23 set Rollobad hoch , \
define next9 at +00:00:26 set Rollosz hoch , \
define nexta at +00:00:29 set Rollokz hoch , \
define nextb at +00:00:32 set Rollobz hoch)
attr taste_8_kurz cmdState kurz|lang
attr taste_8_kurz do always

define taste_8_lang DOIF ([fb8_Btn_08] =~ "LongRelease")\
(fhem ("delete next.*") , \
set Rollowz stop , \
set Rolloezli stop , \
set Rollokli stop , \
set Rollokre stop , \
set Rollofl stop , \
set Rollogwc stop , \
set Rollobad stop , \
set Rollosz stop , \
set Rollokz stop , \
set Rollobz stop)
attr taste_8_lang cmdState lang|kurz
attr taste_8_lang do always

slonnet

Hallo zusammen,

ich habe mir gerade den ganzen Thread durchgelesen.

Ich habe genau das Gleiche vor, stecke aber auch noch in der Testphase (Haus ist noch nicht gebaut ;) )

Softwareseitig habe ich einen MCP23017 auch schon laufen.
Einfaches Schalten klappt auch schon ganz ordentlich.

Werde mich aber jetzt auch schon mit der Rolladen Steuerung beschäftigen, evtl kann ich hier noch etwas hilfreich sein.

@IPPhoner2b
Kannst du deinen Hardwareaufbau evtl. etwas genau beschreiben?

Zitat von: IPPhoner2b am 09 November 2014, 15:27:10
- Wenn der jeweilige Ausgang gesetzt wird, muss der andere vorher deaktiviert werden, und dazwischen eine Pause von 0,5 sek sein.

... das wird hoffendlich nicht die einzige Verriegelung sein!

Das sollte auf jeden Fall hardwareseitig über eine Schützverrigelung gemacht werden!

Desweitern schalte ich alle Relais gegen GND, sprich sie haben dauerhaft 24V.
Dadurch brauche ich die Ausgänge auch nicht invertieren ;)
Zwischen MCP23017 und Relais ist noch ein ULQ2003 geschaltet.

Ich werde in nächster Zeit wohl auch noch mehrer MCP23017 einsetzten, und kann daher dein Setup nachstellen.
Mal sehn ob ich das Problem mit der langsamen Reaktionszeit dann reproduzieren kann.  8)

Ich plane überigs bis zu 16 Stück MCP230107 einzusetzten (8 Stück über den zweiten I2C Port des Pis)
Deswegen könnte für mich dein Problem auch bahl zu mein Problem werden  :-\

Gruss slonnet

IPPhoner2b

Hallo Slonnet,

Also ein Arbeitskollege,der sich gerne mit so bastelsachen die Zeit vertreibt, sagte mir, dass es wohl ein generelles Problem des I2C Busses gibt, bei mehreren Chips. Was da jetzt dran ist, oder ob es irgendwie gelöst werden kann,weiß ich leider auch nicht.

Mein Hardware Aufbau umfasst nur paar Kleinigkeiten.
Einmal je nen ULN2803 je MCP Ausgangs Bank, danach kommen dann je 2 Ausgänge ein Umschaltrelais, damit eben nicht auf beide Relais Strom gegeben werden kann, falls mal eins kleben bleiben sollte. Und danach dann je ein Relais für hoch und runter. Als Relais wollte ich Solid State Relais einsetzen. Habe damals mit den "normalen" Relais etwas schlechtere Erfahrungen gemacht.

Das ist aber nur der Aufbau für einen Teil der Rollos, die andere Seite wurde damals mit Funkmodulen Ausgerüstet, die jetzt durch Homematic Komponenten ausgetauscht werden.

Das war es eigentlich auch schon. Ist ja bei meinen Eltern, deswegen wollte ich den Aufwand recht gering halten, und wir wollten halt nicht überall alles neu machen, und letztes Jahr haben wir vorsorglich bei den meisten Rollos Steuerleitungen hingelegt, die dann passend mit fhem gesteuert werden können.

Was mich halt echt noch wurmt ist, dass ich die Timer nicht gelöscht bekomme, und jetzt eben die Rollos trotz Abbruch noch weiter runterfahren. Aber das werde ich mir die Tage mal ansehen. Heute sind meine letzten Homematic Komponenten angekommen, diese habe ich wenigstens schonmal zusammengebaut, aber heute hab ich keinen Nerv mehr, mich da noch mit zu beschäftigen.

Schönen Abend noch.

klausw

Zitat von: IPPhoner2b am 09 Dezember 2014, 21:05:41
Also ein Arbeitskollege,der sich gerne mit so bastelsachen die Zeit vertreibt, sagte mir, dass es wohl ein generelles Problem des I2C Busses gibt, bei mehreren Chips. Was da jetzt dran ist, oder ob es irgendwie gelöst werden kann,weiß ich leider auch nicht.
Bezieht sich das aufs Pi? Oder generell den I2C Bus?
Vielleicht lässt sich das im RPII2C Modul lösen, aber ich tappe da komplett im dunkeln.
Derzeit habe ich LCD, MCP27008, MCP3422, PCA9532 und den EEPROM dran...ohne Probleme.

Zitat von: IPPhoner2b am 09 Dezember 2014, 21:05:41
Was mich halt echt noch wurmt ist, dass ich die Timer nicht gelöscht bekomme, und jetzt eben die Rollos trotz Abbruch noch weiter runterfahren. Aber das werde ich mir die Tage mal ansehen. Heute sind meine letzten Homematic Komponenten angekommen, diese habe ich wenigstens schonmal zusammengebaut, aber heute hab ich keinen Nerv mehr, mich da noch mit zu beschäftigen.
Hältst du die Rollos auch an, oder löschst du nur den timer?
Vermutlich bringt es nix den timer zu löschen, wenn die rollos schon laufen (der timer soll ja sowieso nur wieder abschalten)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hi Klaus,

also bzgl der I2C Schnittstelle meinte mein Kollege, dass es ein generelles Problem der I2Cs ist, das bei mehreren Registern sich irgendwann die Abfragen gegenseitig hochschaukeln, spricht ja in dem Sinne dafür, weil je mehr Ports dran waren, um so schlimmer wurde das ganze ja.

Und bzgl der Timer,
es sollte so sein, dass ich für jedes per Fernbedienung gesteuerte Rollo einen eigenen Timer starte, damit das ganze in meiner gewünschten Verzögerung abläuft. Und ganz am Anfang steht eigentlich drin, dass die Timer gelöscht werden sollen.

Mein Problem ist nämlich folgendes.

Ich drücke auf der Fernbedienung die Taste, dass alle Rollos runterfahren, merke dann, oh, das war falsch, die will ich doch nicht runterfahren, also drücke ich auf die Stop Taste. Die Rollos bleiben auch sofort stehen, aber die "noch nicht gestarteten" Rollos fahren nach ihrer Zeit, wenn der Timer es sagt dann los. Mein Gedanke ist noch, dass es daran liegt, weil ich dafür verschiedene Notifys habe. Das habe ich heute morgen mal auf gut Glück umgestellt, auf ein einziges Notify, ähnlich wie du es mir am Anfang dieses Threads erstellt hast. Bin aber noch nicht zum Testen gekommen, weil ich die Config schon soweit verändert habe, dass die zusätzlichen Homematic Komponenten schon eingebunden sind, obwohl ich sie noch nicht angelernt habe ...
Vielleicht mache ich das gleich noch kurz....

slonnet

Moin,

Zitat von: IPPhoner2b am 10 Dezember 2014, 19:30:30
also bzgl der I2C Schnittstelle meinte mein Kollege, dass es ein generelles Problem der I2Cs ist, das bei mehreren Registern sich irgendwann die Abfragen gegenseitig hochschaukeln, spricht ja in dem Sinne dafür, weil je mehr Ports dran waren, um so schlimmer wurde das ganze ja.

kann ich irgendwie nicht so ganz glauben.
Zumal, wenn die weiteren Portexpander nur als Outputs konfiguriert sind, gibt es nicht mehrere Abfragen!

Richtig ist allerdings, das ein I2C Bus problematisch sein KANN!

z.b. - Bus zu lang (länger als 2 Meter)
       - irgend etwas stört den Bus (Stromführende Leitungen paralell?)
       - Spannungsversorgung zu unstabil (bekommen die MCPs Versorgung vom Pi oder extern?)
       - evtl auch noch ein Fehler mit Fhem Modul oder das Modul falsch angesteuert
             
Evtl. Lösungen:

        - Bus möglichst kurz halten und Störungen durch Übersprechen vermeiden
        - 100nF paralell zwischen VCC/GND direkt am MCP und Spannungsversorgung extern
        - evtl mit Bustreibern arbeiten um den Buspegel anzuheben (z.b PCA9600)

     




       

IPPhoner2b

Wie gesagt, ich kenne mich da nicht so besonders aus, deswegen frage ich da lieber Leute, die da mehr Ahnung von haben  ;D

Also Buslänge schließe ich mal aus, die liegt bei knappen 25cm.
Stromversorgung Ok, da könnte ich noch mal nachschauen, der wird mit den 3,3V vom Pi versorgt, aber eigentlich sollte solch ein Chip nicht wirklich was gebrauchen. Den kleinen Pufferkondensator habe ich eingebaut, also der Fall ist auch erledigt  ;) ::)

Also so wüsste ich nicht, was ich noch verändern müsste. Und es ist ja egal, ob die Chips angesteuert werden, oder nicht.  Sobald diese konfiguriert sind, läuft es langsamer, der Stromverbrauch ist der selbe, weil die Chips ja immer in der Platine stecken :o ::)

Mit mehr Abfragen habe ich mich etwas unglücklich ausgedrückt, meinte damit, dass er eben mehr Register durchklappern muss, um das passende zu erwischen...

Na mal abwarten, wenn du deine Chips angeschlossen hast, ob das dann alles schnell läuft, oder ob er sich dann auch ne Gedenkminute nimmt.

slonnet

Schau mal hier:

http://www.pridopia.co.uk/pi-23017-8-lp.html

Wenn die das so fertig anbieten, denke ich das grundsätzlich 8x MCP23017 am I2C auch problemlos laufen sollte, zumindest von der Hardwareseite aus betrachtet!


IPPhoner2b

Ich weiß ja leider auch nicht, woran es liegen kann. Es läuft ja über das Web IF auch alles ohne Probleme, nur sobald ich eine Aktion bzw Notify Auslöse, ist Feierabend, ab da geht die Zeit sofort nach oben. Wäre interessant, ob bei dir eben die gleichen Probleme auftreten. Werde noch mal nen Schaltplan erstellen, und den hier einstellen, evtl findet ja jemand nen Fehler im Aufbau. Das einzig merkwürdige ist ja, solange ich bei 2 Chips bleibe, ist es nicht zu merken, aber ab dem 3 Chip, der nur definiert sein muss, darauf muss sonst nichts weiter laufen, ab dann geht die Verzögerung in die Höhe.

IPPhoner2b

#52
So, habe heute mal einen Schaltplan der kleinen Platine "gemalt", hoffe man kann etwas drauf erkennen, und vor allem, hoffe ich, dass ihr das interpretieren könnt, was ich da gezeichnet habe.

Versuche das mal als Bild anzuhängen, hoffe das klappt.

Also geklappt hat es, und nicht wundern, habe je MCP nur 4 Taster eingezeichnet, damit es den Platz nicht sprengt, und man weis ja, wie es dann abgeklemmt wird.

Wenn da jetzt dicke Fehler im Aufbau zu finden sind, immer her mit Vorschlägen,was ich verändern / verbessern kann.

Habe grade nochmal im EventMonitor mitlaufen lassen, wenn ich einen Schalter betätige, und zwar, mit 2 oder 4 MCPs aktiviert:

Da siehst man eindeutig, dass die Abfragen deutlich länger dauern...
Hier mit 2 MCPs: (Bearbeitung bis zum Kommando innerhalb 1 Sekunde)
Events:
2014-12-14 14:17:37 readingsProxy abadf aus
2014-12-14 14:17:37 readingsProxy abadw aus
2014-12-14 14:17:37 readingsProxy abzf aus
2014-12-14 14:17:37 readingsProxy abzw aus
2014-12-14 14:17:37 readingsProxy aflf aus
2014-12-14 14:17:37 readingsProxy aflw aus
2014-12-14 14:17:37 readingsProxy agwcf aus
2014-12-14 14:17:37 readingsProxy agwcw aus
2014-12-14 14:17:37 readingsProxy aklif aus
2014-12-14 14:17:37 readingsProxy akliw an
2014-12-14 14:17:37 readingsProxy akref aus
2014-12-14 14:17:37 readingsProxy akrew aus
2014-12-14 14:17:37 readingsProxy akzf aus
2014-12-14 14:17:37 readingsProxy akzw aus
2014-12-14 14:17:37 readingsProxy aszf aus
2014-12-14 14:17:37 readingsProxy aszw aus
2014-12-14 14:17:37 Global global DEFINED kli_down
2014-12-14 14:17:37 readingsProxy abadf aus
2014-12-14 14:17:37 readingsProxy abadw aus
2014-12-14 14:17:37 readingsProxy abzf aus
2014-12-14 14:17:37 readingsProxy abzw aus
2014-12-14 14:17:37 readingsProxy aflf aus
2014-12-14 14:17:37 readingsProxy aflw aus
2014-12-14 14:17:37 readingsProxy agwcf aus
2014-12-14 14:17:37 readingsProxy agwcw aus
2014-12-14 14:17:37 readingsProxy aklif aus
2014-12-14 14:17:37 readingsProxy akliw an
2014-12-14 14:17:37 readingsProxy akref aus
2014-12-14 14:17:37 readingsProxy akrew aus
2014-12-14 14:17:37 readingsProxy akzf aus
2014-12-14 14:17:37 readingsProxy akzw aus
2014-12-14 14:17:37 readingsProxy aszf aus
2014-12-14 14:17:37 readingsProxy aszw aus
2014-12-14 14:17:37 Global global DEFINED kli_clos
2014-12-14 14:17:37 dummy Rollokli runter
2014-12-14 14:17:37 dummy Rollokli runterfahren
2014-12-14 14:17:37 readingsProxy sklir off
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 PortB1: on
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 PortA1: on
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 readingsProxy akliw aus
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 PortA1: off
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 RPI_GPIO Interrupt20 Pinlevel: high
2014-12-14 14:17:37 RPI_GPIO Interrupt20 on
2014-12-14 14:17:37 readingsProxy sklir on
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 PortB1: off
2014-12-14 14:17:37 readingsProxy akliw an
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 PortA1: on
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 RPI_GPIO Interrupt20 Pinlevel: high
2014-12-14 14:17:37 RPI_GPIO Interrupt20 on
2014-12-14 14:17:37 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:37 RPI_GPIO Interrupt20 Pinlevel: low
2014-12-14 14:17:37 RPI_GPIO Interrupt20 off
2014-12-14 14:17:37 RPI_GPIO Interrupt20 Longpress: off
2014-12-14 14:17:38 readingsProxy aklif an
2014-12-14 14:17:38 I2C_MCP23017 mcp_20 PortA0: on
2014-12-14 14:17:38 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:38 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:38 readingsProxy abadf aus
2014-12-14 14:17:38 readingsProxy abadw aus
2014-12-14 14:17:38 readingsProxy abzf aus
2014-12-14 14:17:38 readingsProxy abzw aus
2014-12-14 14:17:38 readingsProxy aflf aus
2014-12-14 14:17:38 readingsProxy aflw aus
2014-12-14 14:17:38 readingsProxy agwcf aus
2014-12-14 14:17:38 readingsProxy agwcw aus
2014-12-14 14:17:38 readingsProxy aklif an
2014-12-14 14:17:38 readingsProxy akliw an
2014-12-14 14:17:38 readingsProxy akref aus
2014-12-14 14:17:38 readingsProxy akrew aus
2014-12-14 14:17:38 readingsProxy akzf aus
2014-12-14 14:17:38 readingsProxy akzw aus
2014-12-14 14:17:38 readingsProxy aszf aus
2014-12-14 14:17:38 readingsProxy aszw aus
2014-12-14 14:17:38 Global global DELETED kli_down
2014-12-14 14:17:53 readingsProxy aklif aus
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 PortA0: off
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:53 readingsProxy abadf aus
2014-12-14 14:17:53 readingsProxy abadw aus
2014-12-14 14:17:53 readingsProxy abzf aus
2014-12-14 14:17:53 readingsProxy abzw aus
2014-12-14 14:17:53 readingsProxy aflf aus
2014-12-14 14:17:53 readingsProxy aflw aus
2014-12-14 14:17:53 readingsProxy agwcf aus
2014-12-14 14:17:53 readingsProxy agwcw aus
2014-12-14 14:17:53 readingsProxy aklif aus
2014-12-14 14:17:53 readingsProxy akliw an
2014-12-14 14:17:53 readingsProxy akref aus
2014-12-14 14:17:53 readingsProxy akrew aus
2014-12-14 14:17:53 readingsProxy akzf aus
2014-12-14 14:17:53 readingsProxy akzw aus
2014-12-14 14:17:53 readingsProxy aszf aus
2014-12-14 14:17:53 readingsProxy aszw aus
2014-12-14 14:17:53 Global global DELETED kli_clos
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:53 readingsProxy akliw aus
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 PortA1: off
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:53 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:53 dummy Rollokli geschlossen
2014-12-14 14:17:54 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:17:54 I2C_MCP23017 mcp_20 Ok


Und hier mit 4 MCPs: (Bearbeitung bis zum Kommando in knapp 3 Sekunden)
Events:
2014-12-14 14:13:16 readingsProxy a21a0 aus
2014-12-14 14:13:16 readingsProxy a21a1 aus
2014-12-14 14:13:16 readingsProxy a21a2 aus
2014-12-14 14:13:16 readingsProxy a21a3 aus
2014-12-14 14:13:16 readingsProxy a21a4 aus
2014-12-14 14:13:16 readingsProxy a21a5 aus
2014-12-14 14:13:16 readingsProxy a21a6 aus
2014-12-14 14:13:16 readingsProxy a21a7 aus
2014-12-14 14:13:16 readingsProxy a21b0 aus
2014-12-14 14:13:16 readingsProxy a21b1 aus
2014-12-14 14:13:16 readingsProxy a21b2 aus
2014-12-14 14:13:16 readingsProxy a21b3 aus
2014-12-14 14:13:16 readingsProxy a21b4 aus
2014-12-14 14:13:16 readingsProxy a21b5 aus
2014-12-14 14:13:16 readingsProxy a21b6 aus
2014-12-14 14:13:16 readingsProxy a21b7 aus
2014-12-14 14:13:16 readingsProxy a22a0 aus
2014-12-14 14:13:16 readingsProxy a22a1 aus
2014-12-14 14:13:16 readingsProxy a22a2 aus
2014-12-14 14:13:16 readingsProxy a22a3 aus
2014-12-14 14:13:17 readingsProxy a22a4 aus
2014-12-14 14:13:17 readingsProxy a22a5 aus
2014-12-14 14:13:17 readingsProxy a22a6 aus
2014-12-14 14:13:17 readingsProxy a22a7 aus
2014-12-14 14:13:17 readingsProxy a22b0 aus
2014-12-14 14:13:17 readingsProxy a22b1 aus
2014-12-14 14:13:17 readingsProxy a22b2 aus
2014-12-14 14:13:17 readingsProxy a22b3 aus
2014-12-14 14:13:17 readingsProxy a22b4 aus
2014-12-14 14:13:17 readingsProxy a22b5 aus
2014-12-14 14:13:17 readingsProxy a22b6 aus
2014-12-14 14:13:17 readingsProxy a22b7 aus
2014-12-14 14:13:17 readingsProxy abadf aus
2014-12-14 14:13:17 readingsProxy abadw aus
2014-12-14 14:13:17 readingsProxy abzf aus
2014-12-14 14:13:17 readingsProxy abzw aus
2014-12-14 14:13:17 readingsProxy aflf aus
2014-12-14 14:13:17 readingsProxy aflw aus
2014-12-14 14:13:17 readingsProxy agwcf aus
2014-12-14 14:13:17 readingsProxy agwcw aus
2014-12-14 14:13:17 readingsProxy aklif aus
2014-12-14 14:13:17 readingsProxy akliw an
2014-12-14 14:13:17 readingsProxy akref aus
2014-12-14 14:13:17 readingsProxy akrew aus
2014-12-14 14:13:17 readingsProxy akzf aus
2014-12-14 14:13:17 readingsProxy akzw aus
2014-12-14 14:13:17 readingsProxy aszf aus
2014-12-14 14:13:17 readingsProxy aszw aus
2014-12-14 14:13:17 Global global DEFINED kli_down
2014-12-14 14:13:17 readingsProxy a21a0 aus
2014-12-14 14:13:17 readingsProxy a21a1 aus
2014-12-14 14:13:17 readingsProxy a21a2 aus
2014-12-14 14:13:17 readingsProxy a21a3 aus
2014-12-14 14:13:17 readingsProxy a21a4 aus
2014-12-14 14:13:17 readingsProxy a21a5 aus
2014-12-14 14:13:17 readingsProxy a21a6 aus
2014-12-14 14:13:17 readingsProxy a21a7 aus
2014-12-14 14:13:18 readingsProxy a21b0 aus
2014-12-14 14:13:18 readingsProxy a21b1 aus
2014-12-14 14:13:18 readingsProxy a21b2 aus
2014-12-14 14:13:18 readingsProxy a21b3 aus
2014-12-14 14:13:18 readingsProxy a21b4 aus
2014-12-14 14:13:18 readingsProxy a21b5 aus
2014-12-14 14:13:18 readingsProxy a21b6 aus
2014-12-14 14:13:18 readingsProxy a21b7 aus
2014-12-14 14:13:18 readingsProxy a22a0 aus
2014-12-14 14:13:18 readingsProxy a22a1 aus
2014-12-14 14:13:18 readingsProxy a22a2 aus
2014-12-14 14:13:18 readingsProxy a22a3 aus
2014-12-14 14:13:18 readingsProxy a22a4 aus
2014-12-14 14:13:18 readingsProxy a22a5 aus
2014-12-14 14:13:18 readingsProxy a22a6 aus
2014-12-14 14:13:18 readingsProxy a22a7 aus
2014-12-14 14:13:18 readingsProxy a22b0 aus
2014-12-14 14:13:18 readingsProxy a22b1 aus
2014-12-14 14:13:18 readingsProxy a22b2 aus
2014-12-14 14:13:18 readingsProxy a22b3 aus
2014-12-14 14:13:18 readingsProxy a22b4 aus
2014-12-14 14:13:18 readingsProxy a22b5 aus
2014-12-14 14:13:18 readingsProxy a22b6 aus
2014-12-14 14:13:18 readingsProxy a22b7 aus
2014-12-14 14:13:18 readingsProxy abadf aus
2014-12-14 14:13:18 readingsProxy abadw aus
2014-12-14 14:13:18 readingsProxy abzf aus
2014-12-14 14:13:18 readingsProxy abzw aus
2014-12-14 14:13:18 readingsProxy aflf aus
2014-12-14 14:13:18 readingsProxy aflw aus
2014-12-14 14:13:18 readingsProxy agwcf aus
2014-12-14 14:13:18 readingsProxy agwcw aus
2014-12-14 14:13:18 readingsProxy aklif aus
2014-12-14 14:13:18 readingsProxy akliw an
2014-12-14 14:13:18 readingsProxy akref aus
2014-12-14 14:13:18 readingsProxy akrew aus
2014-12-14 14:13:18 readingsProxy akzf aus
2014-12-14 14:13:18 readingsProxy akzw aus
2014-12-14 14:13:18 readingsProxy aszf aus
2014-12-14 14:13:18 readingsProxy aszw aus
2014-12-14 14:13:19 Global global DEFINED kli_clos
2014-12-14 14:13:19 dummy Rollokli runter
2014-12-14 14:13:19 dummy Rollokli runterfahren
2014-12-14 14:13:19 readingsProxy sklir off
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 PortB1: on
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 PortA1: on
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 readingsProxy akliw aus
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 PortA1: off
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 RPI_GPIO Interrupt20 Pinlevel: high
2014-12-14 14:13:19 RPI_GPIO Interrupt20 on
2014-12-14 14:13:19 readingsProxy sklir on
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 PortB1: off
2014-12-14 14:13:19 readingsProxy akliw an
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 PortA1: on
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 RPI_GPIO Interrupt20 Longpress: on
2014-12-14 14:13:19 readingsProxy aklif an
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 PortA0: on
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:19 readingsProxy a21a0 aus
2014-12-14 14:13:19 readingsProxy a21a1 aus
2014-12-14 14:13:19 readingsProxy a21a2 aus
2014-12-14 14:13:19 readingsProxy a21a3 aus
2014-12-14 14:13:19 readingsProxy a21a4 aus
2014-12-14 14:13:19 readingsProxy a21a5 aus
2014-12-14 14:13:19 readingsProxy a21a6 aus
2014-12-14 14:13:19 readingsProxy a21a7 aus
2014-12-14 14:13:19 readingsProxy a21b0 aus
2014-12-14 14:13:19 readingsProxy a21b1 aus
2014-12-14 14:13:19 readingsProxy a21b2 aus
2014-12-14 14:13:19 readingsProxy a21b3 aus
2014-12-14 14:13:19 readingsProxy a21b4 aus
2014-12-14 14:13:19 readingsProxy a21b5 aus
2014-12-14 14:13:19 readingsProxy a21b6 aus
2014-12-14 14:13:19 readingsProxy a21b7 aus
2014-12-14 14:13:19 readingsProxy a22a0 aus
2014-12-14 14:13:19 readingsProxy a22a1 aus
2014-12-14 14:13:19 readingsProxy a22a2 aus
2014-12-14 14:13:19 readingsProxy a22a3 aus
2014-12-14 14:13:19 readingsProxy a22a4 aus
2014-12-14 14:13:19 readingsProxy a22a5 aus
2014-12-14 14:13:20 readingsProxy a22a6 aus
2014-12-14 14:13:20 readingsProxy a22a7 aus
2014-12-14 14:13:20 readingsProxy a22b0 aus
2014-12-14 14:13:20 readingsProxy a22b1 aus
2014-12-14 14:13:20 readingsProxy a22b2 aus
2014-12-14 14:13:20 readingsProxy a22b3 aus
2014-12-14 14:13:20 readingsProxy a22b4 aus
2014-12-14 14:13:20 readingsProxy a22b5 aus
2014-12-14 14:13:20 readingsProxy a22b6 aus
2014-12-14 14:13:20 readingsProxy a22b7 aus
2014-12-14 14:13:20 readingsProxy abadf aus
2014-12-14 14:13:20 readingsProxy abadw aus
2014-12-14 14:13:20 readingsProxy abzf aus
2014-12-14 14:13:20 readingsProxy abzw aus
2014-12-14 14:13:20 readingsProxy aflf aus
2014-12-14 14:13:20 readingsProxy aflw aus
2014-12-14 14:13:20 readingsProxy agwcf aus
2014-12-14 14:13:20 readingsProxy agwcw aus
2014-12-14 14:13:20 readingsProxy aklif an
2014-12-14 14:13:20 readingsProxy akliw an
2014-12-14 14:13:20 readingsProxy akref aus
2014-12-14 14:13:20 readingsProxy akrew aus
2014-12-14 14:13:20 readingsProxy akzf aus
2014-12-14 14:13:20 readingsProxy akzw aus
2014-12-14 14:13:20 readingsProxy aszf aus
2014-12-14 14:13:20 readingsProxy aszw aus
2014-12-14 14:13:20 Global global DELETED kli_down
2014-12-14 14:13:20 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:20 RPI_GPIO Interrupt20 Pinlevel: low
2014-12-14 14:13:20 RPI_GPIO Interrupt20 off
2014-12-14 14:13:20 RPI_GPIO Interrupt20 Longpress: off
2014-12-14 14:13:33 readingsProxy akliw aus
2014-12-14 14:13:33 I2C_MCP23017 mcp_20 PortA1: off
2014-12-14 14:13:33 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:33 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:33 readingsProxy a21a0 aus
2014-12-14 14:13:33 readingsProxy a21a1 aus
2014-12-14 14:13:33 readingsProxy a21a2 aus
2014-12-14 14:13:33 readingsProxy a21a3 aus
2014-12-14 14:13:33 readingsProxy a21a4 aus
2014-12-14 14:13:33 readingsProxy a21a5 aus
2014-12-14 14:13:33 readingsProxy a21a6 aus
2014-12-14 14:13:33 readingsProxy a21a7 aus
2014-12-14 14:13:33 readingsProxy a21b0 aus
2014-12-14 14:13:34 readingsProxy a21b1 aus
2014-12-14 14:13:34 readingsProxy a21b2 aus
2014-12-14 14:13:34 readingsProxy a21b3 aus
2014-12-14 14:13:34 readingsProxy a21b4 aus
2014-12-14 14:13:34 readingsProxy a21b5 aus
2014-12-14 14:13:34 readingsProxy a21b6 aus
2014-12-14 14:13:34 readingsProxy a21b7 aus
2014-12-14 14:13:34 readingsProxy a22a0 aus
2014-12-14 14:13:34 readingsProxy a22a1 aus
2014-12-14 14:13:34 readingsProxy a22a2 aus
2014-12-14 14:13:34 readingsProxy a22a3 aus
2014-12-14 14:13:34 readingsProxy a22a4 aus
2014-12-14 14:13:34 readingsProxy a22a5 aus
2014-12-14 14:13:34 readingsProxy a22a6 aus
2014-12-14 14:13:34 readingsProxy a22a7 aus
2014-12-14 14:13:34 readingsProxy a22b0 aus
2014-12-14 14:13:34 readingsProxy a22b1 aus
2014-12-14 14:13:34 readingsProxy a22b2 aus
2014-12-14 14:13:34 readingsProxy a22b3 aus
2014-12-14 14:13:34 readingsProxy a22b4 aus
2014-12-14 14:13:34 readingsProxy a22b5 aus
2014-12-14 14:13:34 readingsProxy a22b6 aus
2014-12-14 14:13:34 readingsProxy a22b7 aus
2014-12-14 14:13:34 readingsProxy abadf aus
2014-12-14 14:13:34 readingsProxy abadw aus
2014-12-14 14:13:34 readingsProxy abzf aus
2014-12-14 14:13:34 readingsProxy abzw aus
2014-12-14 14:13:34 readingsProxy aflf aus
2014-12-14 14:13:34 readingsProxy aflw aus
2014-12-14 14:13:34 readingsProxy agwcf aus
2014-12-14 14:13:34 readingsProxy agwcw aus
2014-12-14 14:13:34 readingsProxy aklif an
2014-12-14 14:13:34 readingsProxy akliw aus
2014-12-14 14:13:34 readingsProxy akref aus
2014-12-14 14:13:34 readingsProxy akrew aus
2014-12-14 14:13:34 readingsProxy akzf aus
2014-12-14 14:13:34 readingsProxy akzw aus
2014-12-14 14:13:34 readingsProxy aszf aus
2014-12-14 14:13:34 readingsProxy aszw aus
2014-12-14 14:13:34 Global global DELETED kli_clos
2014-12-14 14:13:35 readingsProxy aklif aus
2014-12-14 14:13:35 I2C_MCP23017 mcp_20 PortA0: off
2014-12-14 14:13:35 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:35 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:35 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:35 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:35 dummy Rollokli geschlossen
2014-12-14 14:13:35 I2C_MCP23017 mcp_20 Ok
2014-12-14 14:13:35 I2C_MCP23017 mcp_20 Ok

slonnet

Der Schaltplan sieht soweit gut aus, meiner sieht auch nicht anders aus ;)

Ich habe mir aber nochmal das Datenblatt vom MCP23017 angeschaut!

Wenn ich das richtig gelesen habe hat der MCP23017 ein Buskapazität von 135pF bei 1k Pullup Widerstand. (der Pi hat 1,8k Pullup)

Die I2C Buskapazität darf laut Specs 400pF nicht überschreiten!

Wenn man mal die Leitungskapazität auser Acht lässt, hast du mit drei MCP23017 schon 405pF

Das würde erklären warum nur zwei ordendlich funktionieren!

Wenn die Buskapazität zu hoch wird, können die MCPs den I2C Bustakt aktiv verlangsamen...

Die Ausgänge schalten mit 4xMCP wahrscheinlich deshalb noch recht schnell, weil da nicht viel übertragen wird!
Ganz anders sieht das aus, wenn die Eingänge abgefragt werden.

Das ist aber alles nur Theorie von mir, müsste man in der Praxis noch beweisen.

Als Lösung fällt mir da momentan nur ein I2C Bustreiber ein!

IPPhoner2b

Frage mich nur, auf der von dir verlinkten Seite mit der aufgebauten Platine, ist da denn für dich so ein bustreiber zu erkennen? Ich kenne mich in der Richtung nicht so gut aus.

Was wäre denn ein i2c bustreiber, und wie müsste der integriert werden?
Also für mich reicht es ja zum Glück mit 2 schnell funktionierenden MCPs, aber wissen würde ich schon gerne, wie es besser und vor allem richtig läuft.

slonnet

Tja, das habe ich mich auch gefragt, warum die Platine auf der verlinkten Seite dann funktionieren soll.
Vielleicht tut sie das ja auch nicht, bzw läuft auch sehr langsam...

Einen Bustreiber kann ich auf der Platine nicht erkennen! Generell ist die Platine sehr übersichtlich.

Schau dir mal das Datenblatt vom PCA9600 an, da sind auch einige Beispielschaltungen abgebildet.

IPPhoner2b

#56
Wow,

das wird hier immer mysteriöser, hatte schon immer das Problem, dass meine LEDs an den Ausgängen die nicht geschaltet werden, leicht anfangen mit zu glimmen, aber ohne dass der Ausgang gesetzt wird.

Aber ich habe riesige Probleme,wenn ich meine 4 Taster benutze (noch sind es nur 4, könnten aber auch 8 werden. Jedenfalls wenn ich diese der Reihe nach einschalte, geht das Teil ab, wie ne Lichtorgel, und die Ausgänge gehen nicht mehr in der jeweiligen Reihenfolge an, wie es sollte.

Also bei nem zeitlichen Abstand größer einer Sekunde klappt alles, aber da 2 Schalter direkt nebeneinander sitzen werden, kann es durchaus passieren, dass diese so gut wie synchron oder leicht zeitlich versetzt gedrückt werden.

Habe auch schon versucht, den Eingang über "debounce_in_ms" mit 50 oder 100 zu entprellen, aber auch das bringt keine Besserung.

z.B. schaltet der mir einfach den "Wechsel" Ausgang aus, obwohl dieser die ganze Zeit an sein sollte. Wenn ich die Schalter längere Zeit nacheinander betätige, habe ich keine Probleme mehr

Hier der kurze Abstand:
Events:
2014-12-16 10:16:07 readingsProxy abadf aus
2014-12-16 10:16:07 readingsProxy abadw aus
2014-12-16 10:16:08 readingsProxy abzf aus
2014-12-16 10:16:08 readingsProxy abzw aus
2014-12-16 10:16:08 readingsProxy aflf aus
2014-12-16 10:16:08 readingsProxy aflw aus
2014-12-16 10:16:08 readingsProxy agwcf aus
2014-12-16 10:16:08 readingsProxy agwcw aus
2014-12-16 10:16:08 readingsProxy aklif aus
2014-12-16 10:16:08 readingsProxy akliw an
2014-12-16 10:16:08 readingsProxy akref aus
2014-12-16 10:16:08 readingsProxy akrew aus
2014-12-16 10:16:08 readingsProxy akzf aus
2014-12-16 10:16:08 readingsProxy akzw aus
2014-12-16 10:16:08 readingsProxy aszf aus
2014-12-16 10:16:08 readingsProxy aszw aus
2014-12-16 10:16:08 Global global DEFINED kli_down
2014-12-16 10:16:08 readingsProxy abadf aus
2014-12-16 10:16:08 readingsProxy abadw aus
2014-12-16 10:16:08 readingsProxy abzf aus
2014-12-16 10:16:08 readingsProxy abzw aus
2014-12-16 10:16:08 readingsProxy aflf aus
2014-12-16 10:16:08 readingsProxy aflw aus
2014-12-16 10:16:08 readingsProxy agwcf aus
2014-12-16 10:16:08 readingsProxy agwcw aus
2014-12-16 10:16:08 readingsProxy aklif aus
2014-12-16 10:16:08 readingsProxy akliw an
2014-12-16 10:16:08 readingsProxy akref aus
2014-12-16 10:16:08 readingsProxy akrew aus
2014-12-16 10:16:08 readingsProxy akzf aus
2014-12-16 10:16:08 readingsProxy akzw aus
2014-12-16 10:16:08 readingsProxy aszf aus
2014-12-16 10:16:08 readingsProxy aszw aus
2014-12-16 10:16:08 Global global DEFINED kli_clos
2014-12-16 10:16:08 dummy Rollokli runter
2014-12-16 10:16:08 dummy Rollokli runterfahren
2014-12-16 10:16:08 readingsProxy sklir off
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 PortB1: on
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 PortA1: on
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:08 readingsProxy akliw aus
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 PortA1: off         <----- Hier wird der Ausgang sofort wieder deaktiviert
2014-12-16 10:16:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:08 RPI_GPIO Interrupt20 Pinlevel: high
2014-12-16 10:16:08 RPI_GPIO Interrupt20 on
2014-12-16 10:16:09 readingsProxy abadf aus
2014-12-16 10:16:09 readingsProxy abadw aus
2014-12-16 10:16:09 readingsProxy abzf aus
2014-12-16 10:16:09 readingsProxy abzw aus
2014-12-16 10:16:09 readingsProxy aflf aus
2014-12-16 10:16:09 readingsProxy aflw aus
2014-12-16 10:16:09 readingsProxy agwcf aus
2014-12-16 10:16:09 readingsProxy agwcw aus
2014-12-16 10:16:09 readingsProxy aklif aus
2014-12-16 10:16:09 readingsProxy akliw aus
2014-12-16 10:16:09 readingsProxy akref aus
2014-12-16 10:16:09 readingsProxy akrew an
2014-12-16 10:16:09 readingsProxy akzf aus
2014-12-16 10:16:09 readingsProxy akzw aus
2014-12-16 10:16:09 readingsProxy aszf aus
2014-12-16 10:16:09 readingsProxy aszw aus
2014-12-16 10:16:09 Global global DEFINED kre_down
2014-12-16 10:16:09 readingsProxy abadf aus
2014-12-16 10:16:09 readingsProxy abadw aus
2014-12-16 10:16:09 readingsProxy abzf aus
2014-12-16 10:16:09 readingsProxy abzw aus
2014-12-16 10:16:09 readingsProxy aflf aus
2014-12-16 10:16:09 readingsProxy aflw aus
2014-12-16 10:16:09 readingsProxy agwcf aus
2014-12-16 10:16:09 readingsProxy agwcw aus
2014-12-16 10:16:09 readingsProxy aklif aus
2014-12-16 10:16:09 readingsProxy akliw aus
2014-12-16 10:16:09 readingsProxy akref aus
2014-12-16 10:16:09 readingsProxy akrew an
2014-12-16 10:16:09 readingsProxy akzf aus
2014-12-16 10:16:09 readingsProxy akzw aus
2014-12-16 10:16:09 readingsProxy aszf aus
2014-12-16 10:16:09 readingsProxy aszw aus
2014-12-16 10:16:09 Global global DEFINED kre_clos
2014-12-16 10:16:09 dummy Rollokre runter
2014-12-16 10:16:09 dummy Rollokre runterfahren
2014-12-16 10:16:09 readingsProxy skrer off
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 PortB3: on
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 PortA3: on
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 readingsProxy akliw an
2014-12-16 10:16:09 readingsProxy akrew aus
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 PortA1: on
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 PortA3: off
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 RPI_GPIO Interrupt20 Pinlevel: high
2014-12-16 10:16:09 RPI_GPIO Interrupt20 on
2014-12-16 10:16:09 readingsProxy aklif an
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 PortA0: on
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:09 readingsProxy abadf aus
2014-12-16 10:16:09 readingsProxy abadw aus
2014-12-16 10:16:09 readingsProxy abzf aus
2014-12-16 10:16:09 readingsProxy abzw aus
2014-12-16 10:16:09 readingsProxy aflf aus
2014-12-16 10:16:09 readingsProxy aflw aus
2014-12-16 10:16:09 readingsProxy agwcf aus
2014-12-16 10:16:09 readingsProxy agwcw aus
2014-12-16 10:16:09 readingsProxy aklif an
2014-12-16 10:16:10 readingsProxy akliw an
2014-12-16 10:16:10 readingsProxy akref aus
2014-12-16 10:16:10 readingsProxy akrew aus
2014-12-16 10:16:10 readingsProxy akzf aus
2014-12-16 10:16:10 readingsProxy akzw aus
2014-12-16 10:16:10 readingsProxy aszf aus
2014-12-16 10:16:10 readingsProxy aszw aus
2014-12-16 10:16:10 Global global DELETED kli_down
2014-12-16 10:16:10 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:10 RPI_GPIO Interrupt20 Pinlevel: low
2014-12-16 10:16:10 RPI_GPIO Interrupt20 off
2014-12-16 10:16:10 RPI_GPIO Interrupt20 Longpress: off
2014-12-16 10:16:10 readingsProxy akref an
2014-12-16 10:16:10 I2C_MCP23017 mcp_20 PortA2: on
2014-12-16 10:16:10 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:10 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:10 readingsProxy abadf aus
2014-12-16 10:16:10 readingsProxy abadw aus
2014-12-16 10:16:10 readingsProxy abzf aus
2014-12-16 10:16:10 readingsProxy abzw aus
2014-12-16 10:16:10 readingsProxy aflf aus
2014-12-16 10:16:10 readingsProxy aflw aus
2014-12-16 10:16:10 readingsProxy agwcf aus
2014-12-16 10:16:10 readingsProxy agwcw aus
2014-12-16 10:16:10 readingsProxy aklif an
2014-12-16 10:16:10 readingsProxy akliw an
2014-12-16 10:16:10 readingsProxy akref an
2014-12-16 10:16:10 readingsProxy akrew aus
2014-12-16 10:16:10 readingsProxy akzf aus
2014-12-16 10:16:10 readingsProxy akzw aus
2014-12-16 10:16:10 readingsProxy aszf aus
2014-12-16 10:16:10 readingsProxy aszw aus
2014-12-16 10:16:10 Global global DELETED kre_down
2014-12-16 10:16:24 readingsProxy abadf aus
2014-12-16 10:16:24 readingsProxy abadw aus
2014-12-16 10:16:24 readingsProxy abzf aus
2014-12-16 10:16:24 readingsProxy abzw aus
2014-12-16 10:16:24 readingsProxy aflf aus
2014-12-16 10:16:24 readingsProxy aflw aus
2014-12-16 10:16:24 readingsProxy agwcf aus
2014-12-16 10:16:24 readingsProxy agwcw aus
2014-12-16 10:16:24 readingsProxy aklif an
2014-12-16 10:16:24 readingsProxy akliw an
2014-12-16 10:16:24 readingsProxy akref an
2014-12-16 10:16:24 readingsProxy akrew aus
2014-12-16 10:16:24 readingsProxy akzf aus
2014-12-16 10:16:24 readingsProxy akzw aus
2014-12-16 10:16:24 readingsProxy aszf aus
2014-12-16 10:16:24 readingsProxy aszw aus
2014-12-16 10:16:24 Global global DELETED kli_clos
2014-12-16 10:16:24 readingsProxy aklif aus
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 PortA0: off
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:24 readingsProxy akliw aus
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 PortA1: off
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:24 dummy Rollokli geschlossen
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:24 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:25 readingsProxy abadf aus
2014-12-16 10:16:25 readingsProxy abadw aus
2014-12-16 10:16:25 readingsProxy abzf aus
2014-12-16 10:16:25 readingsProxy abzw aus
2014-12-16 10:16:25 readingsProxy aflf aus
2014-12-16 10:16:25 readingsProxy aflw aus
2014-12-16 10:16:25 readingsProxy agwcf aus
2014-12-16 10:16:25 readingsProxy agwcw aus
2014-12-16 10:16:25 readingsProxy aklif aus
2014-12-16 10:16:25 readingsProxy akliw aus
2014-12-16 10:16:25 readingsProxy akref an
2014-12-16 10:16:25 readingsProxy akrew aus
2014-12-16 10:16:25 readingsProxy akzf aus
2014-12-16 10:16:25 readingsProxy akzw aus
2014-12-16 10:16:25 readingsProxy aszf aus
2014-12-16 10:16:25 readingsProxy aszw aus
2014-12-16 10:16:25 Global global DELETED kre_clos
2014-12-16 10:16:25 readingsProxy akref aus
2014-12-16 10:16:25 I2C_MCP23017 mcp_20 PortA2: off
2014-12-16 10:16:25 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:25 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:25 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:25 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:25 dummy Rollokre geschlossen
2014-12-16 10:16:25 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:25 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:26 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:16:26 I2C_MCP23017 mcp_20 Ok


Hier der lange Abstand:
Events:
2014-12-16 10:19:52 readingsProxy abadf aus
2014-12-16 10:19:52 readingsProxy abadw aus
2014-12-16 10:19:52 readingsProxy abzf aus
2014-12-16 10:19:52 readingsProxy abzw aus
2014-12-16 10:19:52 readingsProxy aflf aus
2014-12-16 10:19:52 readingsProxy aflw aus
2014-12-16 10:19:52 readingsProxy agwcf aus
2014-12-16 10:19:52 readingsProxy agwcw aus
2014-12-16 10:19:52 readingsProxy aklif aus
2014-12-16 10:19:52 readingsProxy akliw an
2014-12-16 10:19:52 readingsProxy akref aus
2014-12-16 10:19:52 readingsProxy akrew aus
2014-12-16 10:19:52 readingsProxy akzf aus
2014-12-16 10:19:52 readingsProxy akzw aus
2014-12-16 10:19:52 readingsProxy aszf aus
2014-12-16 10:19:52 readingsProxy aszw aus
2014-12-16 10:19:52 Global global DEFINED kli_down
2014-12-16 10:19:52 readingsProxy abadf aus
2014-12-16 10:19:52 readingsProxy abadw aus
2014-12-16 10:19:52 readingsProxy abzf aus
2014-12-16 10:19:52 readingsProxy abzw aus
2014-12-16 10:19:52 readingsProxy aflf aus
2014-12-16 10:19:52 readingsProxy aflw aus
2014-12-16 10:19:52 readingsProxy agwcf aus
2014-12-16 10:19:52 readingsProxy agwcw aus
2014-12-16 10:19:52 readingsProxy aklif aus
2014-12-16 10:19:52 readingsProxy akliw an
2014-12-16 10:19:52 readingsProxy akref aus
2014-12-16 10:19:52 readingsProxy akrew aus
2014-12-16 10:19:52 readingsProxy akzf aus
2014-12-16 10:19:52 readingsProxy akzw aus
2014-12-16 10:19:52 readingsProxy aszf aus
2014-12-16 10:19:52 readingsProxy aszw aus
2014-12-16 10:19:52 Global global DEFINED kli_clos
2014-12-16 10:19:52 dummy Rollokli runter
2014-12-16 10:19:52 dummy Rollokli runterfahren
2014-12-16 10:19:52 readingsProxy sklir off
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 PortB1: on
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 PortA1: on
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:52 readingsProxy akliw aus
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 PortA1: off
2014-12-16 10:19:52 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:52 RPI_GPIO Interrupt20 Pinlevel: high
2014-12-16 10:19:52 RPI_GPIO Interrupt20 on
2014-12-16 10:19:53 readingsProxy akliw an
2014-12-16 10:19:53 I2C_MCP23017 mcp_20 PortA1: on
2014-12-16 10:19:53 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:53 RPI_GPIO Interrupt20 Pinlevel: low
2014-12-16 10:19:53 RPI_GPIO Interrupt20 off
2014-12-16 10:19:53 RPI_GPIO Interrupt20 Longpress: off
2014-12-16 10:19:53 readingsProxy aklif an
2014-12-16 10:19:53 I2C_MCP23017 mcp_20 PortA0: on
2014-12-16 10:19:53 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:53 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:53 readingsProxy abadf aus
2014-12-16 10:19:53 readingsProxy abadw aus
2014-12-16 10:19:53 readingsProxy abzf aus
2014-12-16 10:19:53 readingsProxy abzw aus
2014-12-16 10:19:53 readingsProxy aflf aus
2014-12-16 10:19:53 readingsProxy aflw aus
2014-12-16 10:19:53 readingsProxy agwcf aus
2014-12-16 10:19:53 readingsProxy agwcw aus
2014-12-16 10:19:53 readingsProxy aklif an
2014-12-16 10:19:53 readingsProxy akliw an
2014-12-16 10:19:53 readingsProxy akref aus
2014-12-16 10:19:53 readingsProxy akrew aus
2014-12-16 10:19:53 readingsProxy akzf aus
2014-12-16 10:19:53 readingsProxy akzw aus
2014-12-16 10:19:53 readingsProxy aszf aus
2014-12-16 10:19:53 readingsProxy aszw aus
2014-12-16 10:19:53 Global global DELETED kli_down
2014-12-16 10:19:54 readingsProxy abadf aus
2014-12-16 10:19:54 readingsProxy abadw aus
2014-12-16 10:19:54 readingsProxy abzf aus
2014-12-16 10:19:54 readingsProxy abzw aus
2014-12-16 10:19:54 readingsProxy aflf aus
2014-12-16 10:19:54 readingsProxy aflw aus
2014-12-16 10:19:54 readingsProxy agwcf aus
2014-12-16 10:19:54 readingsProxy agwcw aus
2014-12-16 10:19:54 readingsProxy aklif an
2014-12-16 10:19:54 readingsProxy akliw an
2014-12-16 10:19:54 readingsProxy akref aus
2014-12-16 10:19:54 readingsProxy akrew an
2014-12-16 10:19:54 readingsProxy akzf aus
2014-12-16 10:19:54 readingsProxy akzw aus
2014-12-16 10:19:54 readingsProxy aszf aus
2014-12-16 10:19:54 readingsProxy aszw aus
2014-12-16 10:19:54 Global global DEFINED kre_down
2014-12-16 10:19:54 readingsProxy abadf aus
2014-12-16 10:19:54 readingsProxy abadw aus
2014-12-16 10:19:54 readingsProxy abzf aus
2014-12-16 10:19:54 readingsProxy abzw aus
2014-12-16 10:19:54 readingsProxy aflf aus
2014-12-16 10:19:54 readingsProxy aflw aus
2014-12-16 10:19:54 readingsProxy agwcf aus
2014-12-16 10:19:54 readingsProxy agwcw aus
2014-12-16 10:19:55 readingsProxy aklif an
2014-12-16 10:19:55 readingsProxy akliw an
2014-12-16 10:19:55 readingsProxy akref aus
2014-12-16 10:19:55 readingsProxy akrew an
2014-12-16 10:19:55 readingsProxy akzf aus
2014-12-16 10:19:55 readingsProxy akzw aus
2014-12-16 10:19:55 readingsProxy aszf aus
2014-12-16 10:19:55 readingsProxy aszw aus
2014-12-16 10:19:55 Global global DEFINED kre_clos
2014-12-16 10:19:55 dummy Rollokre runter
2014-12-16 10:19:55 dummy Rollokre runterfahren
2014-12-16 10:19:55 readingsProxy skrer off
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 PortB3: on
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 PortA3: on
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 readingsProxy akrew aus
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 PortA3: off
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 RPI_GPIO Interrupt20 Pinlevel: high
2014-12-16 10:19:55 RPI_GPIO Interrupt20 on
2014-12-16 10:19:55 readingsProxy akrew an
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 PortA3: on
2014-12-16 10:19:55 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:55 RPI_GPIO Interrupt20 Pinlevel: low
2014-12-16 10:19:55 RPI_GPIO Interrupt20 off
2014-12-16 10:19:55 RPI_GPIO Interrupt20 Longpress: off
2014-12-16 10:19:58 readingsProxy akref an
2014-12-16 10:19:58 I2C_MCP23017 mcp_20 PortA2: on
2014-12-16 10:19:58 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:58 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:19:58 readingsProxy abadf aus
2014-12-16 10:19:58 readingsProxy abadw aus
2014-12-16 10:19:58 readingsProxy abzf aus
2014-12-16 10:19:58 readingsProxy abzw aus
2014-12-16 10:19:58 readingsProxy aflf aus
2014-12-16 10:19:58 readingsProxy aflw aus
2014-12-16 10:19:58 readingsProxy agwcf aus
2014-12-16 10:19:58 readingsProxy agwcw aus
2014-12-16 10:19:58 readingsProxy aklif an
2014-12-16 10:19:58 readingsProxy akliw an
2014-12-16 10:19:58 readingsProxy akref an
2014-12-16 10:19:58 readingsProxy akrew an
2014-12-16 10:19:58 readingsProxy akzf aus
2014-12-16 10:19:58 readingsProxy akzw aus
2014-12-16 10:19:58 readingsProxy aszf aus
2014-12-16 10:19:58 readingsProxy aszw aus
2014-12-16 10:19:58 Global global DELETED kre_down
2014-12-16 10:20:08 readingsProxy aklif aus
2014-12-16 10:20:08 I2C_MCP23017 mcp_20 PortA0: off
2014-12-16 10:20:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:08 readingsProxy abadf aus
2014-12-16 10:20:08 readingsProxy abadw aus
2014-12-16 10:20:08 readingsProxy abzf aus
2014-12-16 10:20:08 readingsProxy abzw aus
2014-12-16 10:20:08 readingsProxy aflf aus
2014-12-16 10:20:08 readingsProxy aflw aus
2014-12-16 10:20:08 readingsProxy agwcf aus
2014-12-16 10:20:08 readingsProxy agwcw aus
2014-12-16 10:20:08 readingsProxy aklif aus
2014-12-16 10:20:08 readingsProxy akliw an
2014-12-16 10:20:08 readingsProxy akref an
2014-12-16 10:20:08 readingsProxy akrew an
2014-12-16 10:20:08 readingsProxy akzf aus
2014-12-16 10:20:08 readingsProxy akzw aus
2014-12-16 10:20:08 readingsProxy aszf aus
2014-12-16 10:20:08 readingsProxy aszw aus
2014-12-16 10:20:08 Global global DELETED kli_clos
2014-12-16 10:20:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:08 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:08 readingsProxy akliw aus
2014-12-16 10:20:08 I2C_MCP23017 mcp_20 PortA1: off
2014-12-16 10:20:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:09 dummy Rollokli geschlossen
2014-12-16 10:20:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:09 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:10 readingsProxy abadf aus
2014-12-16 10:20:10 readingsProxy abadw aus
2014-12-16 10:20:10 readingsProxy abzf aus
2014-12-16 10:20:10 readingsProxy abzw aus
2014-12-16 10:20:10 readingsProxy aflf aus
2014-12-16 10:20:10 readingsProxy aflw aus
2014-12-16 10:20:10 readingsProxy agwcf aus
2014-12-16 10:20:10 readingsProxy agwcw aus
2014-12-16 10:20:11 readingsProxy aklif aus
2014-12-16 10:20:11 readingsProxy akliw aus
2014-12-16 10:20:11 readingsProxy akref an
2014-12-16 10:20:11 readingsProxy akrew an
2014-12-16 10:20:11 readingsProxy akzf aus
2014-12-16 10:20:11 readingsProxy akzw aus
2014-12-16 10:20:11 readingsProxy aszf aus
2014-12-16 10:20:11 readingsProxy aszw aus
2014-12-16 10:20:11 Global global DELETED kre_clos
2014-12-16 10:20:11 readingsProxy akref aus
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 PortA2: off
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:11 readingsProxy akrew aus
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 PortA3: off
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:11 dummy Rollokre geschlossen
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:11 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:13 I2C_MCP23017 mcp_20 Ok
2014-12-16 10:20:13 I2C_MCP23017 mcp_20 Ok


Ich denke mal, ich werde das ganze auf einem Pi B+ mal neu konfigurieren, und dann dort mit den einzelnen Eingängen auf die einzelnen GPIO Ports gehen, damit sollte ich diese Abfrageschleife ja umgehen, und es evtl nicht zu verschluckern kommen

klausw

Zitat von: IPPhoner2b am 16 Dezember 2014, 10:20:28
Wow,

das wird hier immer mysteriöser, hatte schon immer das Problem, dass meine LEDs an den Ausgängen die nicht geschaltet werden, leicht anfangen mit zu glimmen, aber ohne dass der Ausgang gesetzt wird.
Ist die Versorgung der MCP's stabil?
Flackern von LEDs an Ausgängen kann auf instabile Versorgung zurückzuführen sein. Wie sind die LED's angeschlossen?
Hast du ein Oszi zum nachmessen?
Natürlich kann auch das I2C_MCP23017 Modul fehlerhaft sein.
Aber dann sollte der Fehler eigentlich immer auftreten und nicht nur manchmal.

Zitat von: IPPhoner2b am 16 Dezember 2014, 10:20:28
Aber ich habe riesige Probleme,wenn ich meine 4 Taster benutze (noch sind es nur 4, könnten aber auch 8 werden. Jedenfalls wenn ich diese der Reihe nach einschalte, geht das Teil ab, wie ne Lichtorgel, und die Ausgänge gehen nicht mehr in der jeweiligen Reihenfolge an, wie es sollte.

Also bei nem zeitlichen Abstand größer einer Sekunde klappt alles, aber da 2 Schalter direkt nebeneinander sitzen werden, kann es durchaus passieren, dass diese so gut wie synchron oder leicht zeitlich versetzt gedrückt werden.
Klar, das kann passieren und sollte auch abgefangen werden.
Baue doch mal eine Logfunktion in dein notify zum hoch runterfahren ein.
Es ist auch möglich, das sich fhem dor verschluckt.

Zitat von: IPPhoner2b am 16 Dezember 2014, 10:20:28
Habe auch schon versucht, den Eingang über "debounce_in_ms" mit 50 oder 100 zu entprellen, aber auch das bringt keine Besserung.
Der debounce ist eher für mechanische Schalter gedacht. In diesem Fall hat der keinen Einfluss

Zitat von: IPPhoner2b am 16 Dezember 2014, 10:20:28
z.B. schaltet der mir einfach den "Wechsel" Ausgang aus, obwohl dieser die ganze Zeit an sein sollte. Wenn ich die Schalter längere Zeit nacheinander betätige, habe ich keine Probleme mehr
mit den Events kann ich nicht viel anfangen, vielleicht brauche ich da mal ne ruhige Minute um das zu verstehen  8)

Zitat von: IPPhoner2b am 16 Dezember 2014, 10:20:28

Ich denke mal, ich werde das ganze auf einem Pi B+ mal neu konfigurieren, und dann dort mit den einzelnen Eingängen auf die einzelnen GPIO Ports gehen, damit sollte ich diese Abfrageschleife ja umgehen, und es evtl nicht zu verschluckern kommen
Evtl. könntest du nur mit den Eingängen am MCP beginnen. Nur diese konfigurieren, ohne notify und so (mit Ausnahme des Interrupt natürlich). Danach in der Weboberfläche schauen, wie sie sich verhalten. Auch bei gleichzeitigem Drücken mehrerer Tasten.
Was du auch noch machen könntest, wäre im Interruptfall etwas zeitverzögert die Taster auszulesen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

slonnet

Zitat von: klausw am 16 Dezember 2014, 13:58:50
Ist die Versorgung der MCP's stabil?
Flackern von LEDs an Ausgängen kann auf instabile Versorgung zurückzuführen sein. Wie sind die LED's angeschlossen?
Hast du ein Oszi zum nachmessen?

So langsam glaube ich auch, die Spannungsversorgung ist nicht stabil!
Der Pi kann nur ca. 50mA bei den 3,3V Pins!!!

Im Log habe ich gerade gesehn, das da sehr oft "I2C_MCP23017 mcp_20 Ok" steht.
Das sieht für mich aus, als ob der MCP neu initialisieren würde, vllt nach dem die Spannung wieder stabil anliegt! ;)

Hast du die Möglichkeit 3,3V extern zu erzeugen, um die Fehlerquelle der instabilen Spannungsversorgung auszuschliesen?

IPPhoner2b

#59
Hui, jetzt aber der Reihe nach *g*

Also bzgl Stromversorgung, über den Pi werden die 3,3V für die zwei MCPs von Pin 1 bezogen. (Ne andere Quelle hätte ich jetzt so nicht dafür)
Alles andere läuft über ein extra eingespeistes 5 bzw. 12V Netzteil. War erst auf 12V, aber werde wohl auf 5V Wechseln, da hängen aber wohlgemerkt nur 2 ULN2803 und 16 LEDs dran, und da gehe ich von aus, dass ein 2A Netzteil das schaffen sollte. Wenn die Ausgänge aktiv sind, leuchten diese auch hell und konstant, also sie flackern nicht (war mit der Lichtorgel etwas falsch beschrieben).

Was eben auffällt, wenn ich als Beispiel am MCP 20 3 oder 4 Ausgänge setze, glimmen ein paar andere LEDs an diesem MCP, und an allen anderen MCPs, die "DEFINIERT" sind. Bei in der Software nicht definierten MCPs, glimmen auch keine LEDs ::) :o

Einen Oszi habe ich leider nicht, war gestern abend aber noch bei meinem Arbeitskollegen, der von Elektronik etwas mehr kenne hat, und wir haben alles möglich durchgemessen, aber keinen Fehler im Aufbau finden können, habe an den ULN2803 noch Freilaufdioden und eben die LEDs hinten dran, und selbst wo wir da welche abgekniffen haben, glimmten an den anderen Ausgängen die LEDs mit, und man merkte einen Spannungsabfall an den anderen ULNs, die an einem anderen MCP saßen um 0,2V, wenn die betroffene LED am anderen ULN anging

Der Fehler ist auch jedes mal vorhanden, und nicht nur manchmal.

wie logge ich denn das Notify am einfachsten mit? Dann habt ihr auch gleich die gewünschten Daten  ::) 8)

Das debounce habe ich drin, weil ich ja 4 mechanische Taster dran habe, und mir dort evtl ein flackern eben das Notify doppelt auslöst oder so.

Also ich habe je Rollo 2 Eingänge (hochfahren und runterfahren) und 2 Ausgänge, hier jeweils einmal (F)ahren und (W)echseln, damit eben ein Ausgang für die Fahrbewegung ist, und der andere Ausgang schaltet ein Relais, womit dann die Richtung gewechselt wird, also für hoch bzw runter.

Hatte heute Mittag kurz nen Raspi B+ aufgesetzt, aber als ich die GPIOs definieren wollte, kam da immer die Meldung "file /usr/local/bin/gpio doesnt exist" naja, habe was gelesen, mit nem SM-Bus zeugs, was wohl nicht installiert werden soll, hatte das aus einer alten Anleitung aber noch drin, werde jetzt nochmal neu flashen, und dann mal weiterschauen.

EDIT:
Was mir noch auffällt, das habe ich gestern auch ein paar mal beobachten können, ist, wenn man ALLE Ausgänge schaltet, egal ob übers WEB IF oder sonstwie, gehen alle LEDs aus, macht man einen Ausgang wieder aus, gehen alle bis auf diese wieder an.


Und Spassiger Weise habe ich jetzt das problem, dass er aus on-for-timer ein an-for-timer macht (eventMap), und keine LEDs mehr angehen, wenn ich diese über das Notify ansteuer.

Da ich jetzt alles, was mit den EventMaps zu tun hatte gelöscht hat, was mich eigentlich schon sehr extremst nervt, weil ich meinen Eltern jetzt erklären darf, dass ON OFF ist, und OFF ON, funktioniert das jetzt zwar soweit,

allerdings habe ich eine Frage bzgl meiner angeschlossenen Taster, die ich ja jetzt direkt auf die GPIOs des Pis gebe. Mit welcher Spannung kann ich die Schalter beaufschlagen? Weil vorher am MCP wurden die Schalter auf Masse gelegt, und jetzt gehts andersrum, habe erstmal nur die 3,3V drauf, kann ich da denn mit 5V ausm Netzteil dran gehen, oder grillt es mir dann meine Inputs? Und die "Pud_Resistor" Funktion vom RPI_GPIO der funktioniert nicht mehr, oder? Weil ich da immer nur die Fehlermeldung bekomm, dass er ein Verzeichnis nicht finden kann.

Mit dem Eventmap umändern, was ich hier gefunden habe, das klappt leider auch nicht so
http://forum.fhem.de/index.php/topic,28855.msg219460.html#msg219460
attr aklif eventMap /on:aus/off:an/on-for-timer:on-for-timer/off-for-timer:off-for-timer

klausw

Du kannst die mit 5V versorgen.
Den Rest deines Posts lese ich morgen...komme von der Weihnachtsfeier und kann jetzt nix konstruktives mehr beitragen 8)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Na dann nüchter  dich mal in Ruhe aus *g*

Gut, wenn die 5v funktionieren, werde ich das darauf geben. Dann laufen wirklich nur die MCPS über 3,3V.
Allerdings hatte ich gestern genauso oft "mcp Ok...."  in dem eventmonitor stehen, wie ich mit der alten Config hatte.

slonnet

Zitat von: klausw am 17 Dezember 2014, 01:07:46
Du kannst die mit 5V versorgen.
Den Rest deines Posts lese ich morgen...komme von der Weihnachtsfeier und kann jetzt nix konstruktives mehr beitragen 8)

Wenn du die Taster an den GPIOs meinst, dann NEIN!!!

Es dürfen nur 3,3V an die GPIO Pins angelegt werden!!!

klausw

Zitat von: slonnet am 17 Dezember 2014, 09:32:03
Wenn du die Taster an den GPIOs meinst, dann NEIN!!!

Es dürfen nur 3,3V an die GPIO Pins angelegt werden!!!
Das war auf die MCP bezogen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klausw

Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19
Also bzgl Stromversorgung, über den Pi werden die 3,3V für die zwei MCPs von Pin 1 bezogen. (Ne andere Quelle hätte ich jetzt so nicht dafür)
Alles andere läuft über ein extra eingespeistes 5 bzw. 12V Netzteil. War erst auf 12V, aber werde wohl auf 5V Wechseln, da hängen aber wohlgemerkt nur 2 ULN2803 und 16 LEDs dran, und da gehe ich von aus, dass ein 2A Netzteil das schaffen sollte. Wenn die Ausgänge aktiv sind, leuchten diese auch hell und konstant, also sie flackern nicht (war mit der Lichtorgel etwas falsch beschrieben).

Was eben auffällt, wenn ich als Beispiel am MCP 20 3 oder 4 Ausgänge setze, glimmen ein paar andere LEDs an diesem MCP, und an allen anderen MCPs, die "DEFINIERT" sind. Bei in der Software nicht definierten MCPs, glimmen auch keine LEDs ::) :o
Du sprichst also von glimmen, nicht flackern?
Ein nicht definierter MCP hat alle Ports auf Input gestellt. Glimmen bei den Definierten nur die Outputs?
Was mir in Deinem Schaltplan auffällt ist, das du die Masse von den 3,3V und den 5V nicht verbunden hast.
Das kann natürlich zu einem Masseversatz führen und dadurch den Ausgang vom ULN2803 leicht ansteuern.
Anders kann ich mir das glimmen nicht erklären, der MCP kann nur High oder Low ausgeben.
Das es beim Schalten eines Ausgangs kurz flackert kann natürlich sein. Eine Änderung im Stromverbrauch, hat auch Einfluss auf den Masseversatz.

Wie gesagt, du kannst die MCP's über 5V versorgen. Der I2C Bus läuft als Open Drain, was bedeutet, das der MCP die Busleitung nur aktiv auf Masse ziehen kann. Die positive Spannung wird über die Pullups auf dem Rasperry bestimmt (die gehen auf 3,3V). Du kannst also Problemlos mit 5V versorgte IC's und 3,3V Typen am I2C Bus betreiben.

Nebenbei bemerkt, hat der ULN interne Freilaufdioden, die externen kannst du dir vermutlich sparen.

Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

wie logge ich denn das Notify am einfachsten mit? Dann habt ihr auch gleich die gewünschten Daten  ::) 8)
Log3 $hash, 1, "$NAME $EVENT";
Du kannst auch andere von Dir genutzte Variablen mitloggen, oder einfach sowas wie "bin in an Stelle X". Schau mal, was du benötigst um nachzuvollziehen ob alles in der richtigen Reihenfolge und Anzahl kommt.
Die Daten sollen aber für dich sein, da ich hoffe, das der Fehler nicht in meinem Modul liegt ;)
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

Das debounce habe ich drin, weil ich ja 4 mechanische Taster dran habe, und mir dort evtl ein flackern eben das Notify doppelt auslöst oder so.
Macht Sinn
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19
Also ich habe je Rollo 2 Eingänge (hochfahren und runterfahren) und 2 Ausgänge, hier jeweils einmal (F)ahren und (W)echseln, damit eben ein Ausgang für die Fahrbewegung ist, und der andere Ausgang schaltet ein Relais, womit dann die Richtung gewechselt wird, also für hoch bzw runter.
Auch sinnvoll, dann gehen die Motoren wenigstens nicht kaputt da "auf" und "ab" nicht im Fehlerfall beide Spannung bekommen.

Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

Was mir noch auffällt, das habe ich gestern auch ein paar mal beobachten können, ist, wenn man ALLE Ausgänge schaltet, egal ob übers WEB IF oder sonstwie, gehen alle LEDs aus, macht man einen Ausgang wieder aus, gehen alle bis auf diese wieder an.
Das klingt auch nach Masseversatz.
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

Und Spassiger Weise habe ich jetzt das problem, dass er aus on-for-timer ein an-for-timer macht (eventMap), und keine LEDs mehr angehen, wenn ich diese über das Notify ansteuer.

Da ich jetzt alles, was mit den EventMaps zu tun hatte gelöscht hat, was mich eigentlich schon sehr extremst nervt, weil ich meinen Eltern jetzt erklären darf, dass ON OFF ist, und OFF ON, funktioniert das jetzt zwar soweit,
Hast du das letzte Update drauf? Das Problem sollte eigentlich behoben sein.
Am besten du baust Icons ins WebIf und nutzt eventmap nicht.
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19

allerdings habe ich eine Frage bzgl meiner angeschlossenen Taster, die ich ja jetzt direkt auf die GPIOs des Pis gebe. Mit welcher Spannung kann ich die Schalter beaufschlagen? Weil vorher am MCP wurden die Schalter auf Masse gelegt, und jetzt gehts andersrum, habe erstmal nur die 3,3V drauf, kann ich da denn mit 5V ausm Netzteil dran gehen, oder grillt es mir dann meine Inputs? Und die "Pud_Resistor" Funktion vom RPI_GPIO der funktioniert nicht mehr, oder? Weil ich da immer nur die Fehlermeldung bekomm, dass er ein Verzeichnis nicht finden kann.
nur 3,3V!!! Steht in der commandref aber auch drin
Ebenso steht drin, das für Pud_Resistor das gpio utility installiert sein muss.
Zitat von: IPPhoner2b am 16 Dezember 2014, 18:33:19
Mit dem Eventmap umändern, was ich hier gefunden habe, das klappt leider auch nicht so
http://forum.fhem.de/index.php/topic,28855.msg219460.html#msg219460
attr aklif eventMap /on:aus/off:an/on-for-timer:on-for-timer/off-for-timer:off-for-timer

aklif ist ein readings proxy?
du könntest die invertierung auch über das attribut setfn machen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hach, ihr seid Gold wert, also der Tipp mit der Masse, die beiden Seiten zu verbinden, darauf bin ich beim besten Willen nicht gekommen, und was ist, zack sind die anderen LEDs auch brav aus, und es brennen auch alle Leds, wenn alle Ausgänge aktiviert werden.  ;D ::)

Wegen dem "pud_resistor", ich habe die WiringPi Datenbank genauso installiert, wie es in der Command Ref steht, das war mir bewusst, dass es installiert sein muss, leider klappt es nicht. Aber den Eingang scheint er ja dennoch korrekt zu erfassen, benötige ich den Pullup dann eigenltich?

Wie Gxxl ist das denn, mit dem SetFN hast du es so schön angesprochen, und da ich es nur nicht verstehe, hatte ich es damals so übernommen,(siehe ganz unten das define) und wenn ich das jetzt einfach umänder, dann stehen wenigstens schonmal die richtigen Bezeichnungen drin.
alte Version:
attr aklif setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}

neue Version:
attr aklif setFn {($CMD eq "on")?"PortA0 on":"PortA0 off"}


Hier noch das Define des "AKLIF"
###############################################################################
##  MCP-Chip 20
##  (A)usgang (K)üchenrollo (li)nks (F)ahren         ###(A K LI F)###  PORT A0
##
###############################################################################
define aklif readingsProxy mcp_20:PortA0
attr aklif alias 20 A0 Rollo Küche links Fahren
#attr aklif devStateIcon aus:off an:on
#attr aklif eventMap /on:aus/off:an/on-for-timer:on-for-timer/off-for-timer:off-for-timer
attr aklif group OutputPorts
attr aklif setFn {($CMD eq "on")?"PortA0 off":"PortA0 on"}
attr aklif setList off on
attr aklif valueFn {($VALUE eq "on")?"off":"on"}
#attr aklif eventMap on:aus off:an

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 12:32:11
Wegen dem "pud_resistor", ich habe die WiringPi Datenbank genauso installiert, wie es in der Command Ref steht, das war mir bewusst, dass es installiert sein muss, leider klappt es nicht. Aber den Eingang scheint er ja dennoch korrekt zu erfassen, benötige ich den Pullup dann eigenltich?
Poste bitte die Fehlermeldung.

Den Pullup benötigst du nicht. Du kannst auch extern einen Widerstand ranhängen (z.B. 10k gegen 3,3V und dann den Taster gegen Masse anschließen ... ist zwar wieder invertierte Logik, aber was solls).
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Hi Klaus,
also habe jetzt mal die ganzen Strippen wieder von den GPIOs an den MCP gehängt, wieder die Config zurückgespielt, und die Lichtorgel geht sofort wieder los, dass die Teile unterschiedlich fahren. Mit dem Logfile komme ich nicht klar, schaffe es nichtmal richtig zu definieren, er schreibt mir da noch nix rein.

Jedenfalls wenn ich die einzelnen GPIOs am RPI benutze läuft alles wie es soll, die einzelnen Ausgänge werden schön brav nacheinander geschaltet.
Irgendwie verschluckt sich das Register dabei, weil auslesen scheint richtig zu funktionieren, im WebIF, und im Eventmonitor werden mir die Eingänge richtig dargestellt.

Wenn ich beispielsweise die 4 Schalter die ich habe in einem zeitlichen Abstand von ca. 0,5sek für die "Runterfahr" Bewegung betätige,
Fängt der erste Ausgang richtig an, wird dann aber durch den 2 Eingang unterbrochen, und wechselt danach den Ausgang usw. Ich habe einfach mal 2 kurze wenn auch unscharfe Videos gemacht.

Erstes Video, wo der zeitliche Abstand >1sek ist, und damit alles super läuft
Zweites Video, zeitlicher Abstand <1sek gleiche Reihenfolge der Schalter

IPPhoner2b

Habs übersehen, die Fehlermeldung für den internen Pullup lautet:
sklih: file /usr/local/bin/gpio doesnt exist

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 16:05:55
Habs übersehen, die Fehlermeldung für den internen Pullup lautet:
sklih: file /usr/local/bin/gpio doesnt exist
das heisst aber, das gpio utility von wiringpi ist nicht installiert

Also entweder du hast es doch nicht installiert, oder es ist in einem anderen Ordner.
Versuche es bitte zu finden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

Wie soll ich dass denn finden *g* GUT ::) ;D

Habe die Textzeilen aus der CommandRef einfach kopiert und eingefügt.

Muss ich denn dafür in einem speziellen Verzeichnis sein? Da das da nicht bestand, war mir das nicht bewusst

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 17:05:30
Wie soll ich dass denn finden *g* GUT ::) ;D
find -name gpio

das gpio utility von wiringpi wurde bisher immer unter /usr/local/bin/gpio installiert
vielleicht hat sich da was geändert
gab es bei der installation eine fehlermeldung?
den pad könntest du anpassen, aber dazu musst du natürlich wissen, wo diese datei ist
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

So, habe den Fehler gefunden, also es war nur runtergeladen, und dadurch das in der Command Ref
cd wiringPi ./build
stand, wurde die Datei nicht wirklich compiliert, habe das jetzt nochmal angestoßen.

Mache grade einen Neustart, und dann werde ich es nochmal versuchen

...

Asche auf mein Haupt, oder besser nicht, die grauen Haare kommen so langsam von ganz alleine *g* Oder von FHEM  ::) 8) :o

Pud_Resistor funktioniert jetzt *VIELEN DANK*

Kannst du dir denn was mit den Videos erklären, wie das zustande kommen kann? Irgendwie verschluckt sich das Teil ja. Aber ganz so schlimm ist es eigentlich auch nicht mehr, habe nach dem jetzigen Stand 17 GPIOs frei, und es dürften eigentlich max nur 16 werden. Also würde mir das ausreichen. Aber Schade ist es trotzdem.

klausw

Zitat von: IPPhoner2b am 17 Dezember 2014, 17:23:52
So, habe den Fehler gefunden, also es war nur runtergeladen, und dadurch das in der Command Ref
cd wiringPi ./build
stand, wurde die Datei nicht wirklich compiliert, habe das jetzt nochmal angestoßen.

Mache grade einen Neustart, und dann werde ich es nochmal versuchen
ich stehe gerade auf dem Schlauch. Was ist daran falsch? habe ich nen pfad vergessen?

Zitat von: IPPhoner2b am 17 Dezember 2014, 17:23:52
Kannst du dir denn was mit den Videos erklären, wie das zustande kommen kann? Irgendwie verschluckt sich das Teil ja. Aber ganz so schlimm ist es eigentlich auch nicht mehr, habe nach dem jetzigen Stand 17 GPIOs frei, und es dürften eigentlich max nur 16 werden. Also würde mir das ausreichen. Aber Schade ist es trotzdem.
leider nein, sehr seltsam
Ich wüsste gern, was sich da verhaspelt.
Ich habe den Wust an timern in Verdacht. Bin aber nicht sicher.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

#74
Das mit den Timern kann gut hinkommen, sind ja JE ROLLO 4 Stück, habe diese aber alle anders benannt, dass es wenigstens von der Seite aus keine Probleme geben sollte.
Was mich halt nur verwundert, wenn ich diese knappe sekunden abwarte, dass sozusagen die 2. Led des jeweiligen Rollos angeht (also die Fahrbewegung) dann läuft alles glatt, also müsste er ja beim Timer Kontrollieren/Löschen durcheinander kommen.

ABER:
Wenn ich das ganze über die GPIO PIns ansteuer, kann ich schalten wie ein Irrer, und die Teile laufen in aller Seelenruhe, wie es gewollt ist.

:EDIT:
Nach was anderes, ihr sagt ja, dass ich den 3,3V Ausgang nur mit 50mA belasten darf. Kann ich denn meine Schalter mit 5V beaufschlagen, und am Ende in die Leitung einfach einen Widerstand schalten? So ein 1k Widerstand sollte doch eigentlich auch funktionieren, oder?

Dann kann ich meine Schalter nämlich direkt über das 5V Netzteil speisen. Da ich nur grade nicht weiß, was für ein Strom dafür über den Schalter fließen würde, sind die 1k Ohm auch mehr geraten als alles andere, aber so sollte jedenfalls nichts durchbrennen.

klausw

#75
Zitat von: IPPhoner2b am 17 Dezember 2014, 17:44:56
Das mit den Timern kann gut hinkommen, sind ja JE ROLLO 4 Stück, habe diese aber alle anders benannt, dass es wenigstens von der Seite aus keine Probleme geben sollte.
Was mich halt nur verwundert, wenn ich diese knappe sekunden abwarte, dass sozusagen die 2. Led des jeweiligen Rollos angeht (also die Fahrbewegung) dann läuft alles glatt, also müsste er ja beim Timer Kontrollieren/Löschen durcheinander kommen.

ABER:
Wenn ich das ganze über die GPIO PIns ansteuer, kann ich schalten wie ein Irrer, und die Teile laufen in aller Seelenruhe, wie es gewollt ist.
Mhh, das rückt das MCP Modul natürlich in den Focus.
Ist sonst alles gleich? also auch alle readingsproxy?

Zitat von: IPPhoner2b am 17 Dezember 2014, 17:44:56
:EDIT:
Nach was anderes, ihr sagt ja, dass ich den 3,3V Ausgang nur mit 50mA belasten darf. Kann ich denn meine Schalter mit 5V beaufschlagen, und am Ende in die Leitung einfach einen Widerstand schalten? So ein 1k Widerstand sollte doch eigentlich auch funktionieren, oder?

Dann kann ich meine Schalter nämlich direkt über das 5V Netzteil speisen. Da ich nur grade nicht weiß, was für ein Strom dafür über den Schalter fließen würde, sind die 1k Ohm auch mehr geraten als alles andere, aber so sollte jedenfalls nichts durchbrennen.
Redest du über die Schalter für die GPIO's?
Die können nur 3,3V ... denke nicht mal dran die, über was für einen Widerstand auch immer, an eine höhere Spannung anzuschließen. Es gibt sicherlich einige Kombinationen die klappen, aber dann betreibst du das IC ausserhalb der Spec und kannst irgendwelche Seiteneffekte bekommen.
Folgendes würde ich empfehlen:
GPIO mit 22k oder so gegen 3,3V
Taster schließt GPIO gegen Masse (so benötigst du keine weitere Spannung ausserhalb).
Zur Sicherheit kannst du noch 1k in Serie zum Taster machen (dann geht er auch nicht kaputt wenn der GPIO fälschlicherweise als Ausgang geschaltet wird).
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

IPPhoner2b

So, ich habe mir heute einen Spannungswandler von 5 auf 3,3V bestellt, wenn dieser ankommt, dann werden die Eingänge über den Wandler mit Strom versorgt, dann brauche ich auch den Pi nicht mehr über die Stelle zu belasten. Gestern hat sich noch ein weiteres Problem aufgetan, aber das liegt nur an der verwendeten Relaisplatine, diese sollten mit einem ULN2803 angesteuert werden, bei dem einen Typ Platine klappt das auch wunderbar, nur die Platine mit den Solid-State-Relais muss über 5V angesteuert werden, habe dann noch einen UDN2981 mitgeordert, der eben nicht nach Masse, sondern zur VCC durchschaltet. Mit viel Glück klappt es ja noch zu Weihnachten *g*

Wegen dem Lichtorgel Problem, die Defines sind komplett die gleichen, ausser das eben statt auf den MCP auf den GPIO zugegriffen wird.

IPPhoner2b

Habe da noch ein neues Problem, welches ich vorher noch nicht hatte,
Habe wo ich alles abgeklemmt habe noch ein Update gemacht, allerdings ist da wohl irgendwas mit der Datei 33_readingsproxy oder wie auch immer passiert,
Folgender Text stand heute in der log Datei:
2014.12.27 20:46:27 1: Including ./log/fhem.save
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 3375.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 295) line 1.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/33_readingsProxy.pm line 169.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 296) line 1.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 297) line 1.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 298) line 1.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 307) line 1.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 308) line 1.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 309) line 1.
2014.12.27 20:46:28 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 310) line 1.


Und die Log Datei musste ich vorher löschen, weil diese in nur 2 Tagen auf über 16 MEGABYTES angewachsen war, und absolut nicht mehr lesbar war.
Da stand überall alles mit den Fehlermeldungen voll. Kann es sein, dass ich die Datei zerstört habe? Habe noch ein Update und ein Update Force probiert, aber die Datei wächst immer rasant an.

Während der ganzen testzeit wüsste ich nicht, dass ich solche Probleme hatte.

IPPhoner2b

Anbei mal der Log-Text, der heute morgen nur durch das Fahren des Küchenrollos erzeugt wurde:

2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/33_readingsProxy.pm line 169, <GEN4> line 32.
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 3375, <GEN4> line 32.
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 895) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 896) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 897) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 898) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 907) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 908) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 909) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:34 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 910) line 1, <GEN4> line 32.
2014.12.28 06:45:34 3: eval: my $EVTPART0='geöffnet';my $TYPE='dummy';my $EVENT='geöffnet';my $NAME='Rollokre';{
    fhem ("delete kre_down") if (Value("kre_down") ne "");
    fhem ("delete kre_clos") if (Value("kre_clos") ne "");
    fhem ("delete kre_hoch") if (Value("kre_hoch") ne "");
    fhem ("delete kre_oben") if (Value("kre_oben") ne "");
fhem "set akref off";
if ("$EVENT" eq "runter") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 30";
    fhem "define kre_down at +00:00:01 set akref on-for-timer 20";
    fhem "setreading Rollokre state runterfahren";
    fhem "define kre_clos at +00:00:20 setreading Rollokre state geschlossen";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "hoch") {
my $svar = ReadingsVal("skrer","state","off");
    if ($svar eq "off") {
    fhem "set akref,akrew off";
fhem "define kre_hoch at +00:00:01 set akref on-for-timer 20";
fhem "setreading Rollokre state hochfahren";
fhem "define kre_oben at +00:00:16 setreading Rollokre state geöffnet";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "30") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "50") {
my $svar = ReadingsVal("skreh","state","off");
    if ($svar eq "off") {
fhem "set akrew on-for-timer 22";
fhem "define kre_down at +00:00:01 set akref on-for-timer 12";
fhem "setreading Rollokre state auf 50% fahren";
fhem "define kre_clos at +00:00:13 setreading Rollokre state 50%";
    }
    else {
    fhem "setreading Rollokre state Schalter betätigt";
}
} elsif ("$EVENT" eq "stop") {
    fhem "set akref off";
fhem "define kre_down at +00:00:01 set akrew off";
    fhem "setreading Rollokre state gestoppt";
}
}
2014.12.28 06:45:36 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/33_readingsProxy.pm line 169, <GEN4> line 33.
2014.12.28 06:45:36 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 3375, <GEN4> line 33.
2014.12.28 06:45:36 1: PERL WARNING: Use of uninitialized value $VALUE in string eq at (eval 916) line 1, <GEN4> line 33.

IPPhoner2b

Mein Fehler, Klaus, da brauchst du nichts mehr machen. Habe den mcp 24 noch in einer config für die Ausgänge  gehabt, obwohl ich ihn beim initialisieren deaktiviert hatte.

Nur eine verständliche Fehlermeldung wäre da etwas hilfreich gewesen  ::)

Gruß und vielen Dank für die Hilfe.

klausw

Zitat von: IPPhoner2b am 29 Dezember 2014, 18:08:20
Mein Fehler, Klaus, da brauchst du nichts mehr machen. Habe den mcp 24 noch in einer config für die Ausgänge  gehabt, obwohl ich ihn beim initialisieren deaktiviert hatte.

Nur eine verständliche Fehlermeldung wäre da etwas hilfreich gewesen  ::)

Gruß und vielen Dank für die Hilfe.
Super, Naja auf diese Fehlermeldung habe ich leider keinen Einfluss. 8)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280