Stromstossschalter

Begonnen von mcbain2k, 19 Mai 2013, 10:34:59

Vorheriges Thema - Nächstes Thema

mcbain2k

Also erst mal Danke für die Antworten

hab eure Ratschläge befolgt und weiter getestet:

Habe IN3 durch einen Dummy ersetzt.

ein "set dummy on" schaltet das relais obwohl der Dummy schon voher auf on war,

ist das ein Bug?

Weil logisch ist es nicht. Mein notify sollte die Zustandsänderung des Dummys auf on abfragen und sonst nichts.

Änderung von on auf on sollte es nicht geben. Ein klar definierter Zusand der gleich bleibt schließt das vorhandensein einer Änderung aus.


Puschel74

Hallo,

egal welchen Zustand der Dummy vor dem absetzen des set-Befehls hatte wird der Befehl zum setzen des Relais auf alle Fälle abgegeben.

Ich vermute mal du hast das versucht:

Zitatdefine Arduino2_notify notify Dummy:on { if (Value("OUT05") eq "Aus") { fhem "set OUT05 An"} else { fhem "set OUT05 Aus"} }

Dieses notify löst immer! aus wenn du ein set Dummy on eingibst.
Erst in diesem Notify prüfst du ob der Ausgang An oder Aus ist und schaltest entsprechend um.

Wenn dein Notify nicht auf den Befehl reagieren würde, was sollte ein notify dieser Form machen (egal ob so ein notify sinnvoll ist oder nicht)?
define Arduino2_notify notify Dummy:.* { if (Value("OUT05") eq "Aus") { fhem "set OUT05 An"} else { fhem "set OUT05 Aus"} }

Es müsste ja sonst erst geprüft werden welchen Zustand das Device hat und danach müsste FHEM entscheiden ob das Notify ausgelöst wird oder nicht.
Einfacher ist es doch das Notify bei zutreffendem Regexp aus zu lösen und dem Anwender die Entscheidungsfreiheit zu lassen was danach passieren soll.

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.

mcbain2k

Hallo

1. Problem ist das die Variable IN3 nicht einmal, sondern wiederholt auf on gesetzt wird sobald der Taster gedrückt wird.
2. Problem ist das Fhem anscheinend nicht den Status der Variablen auswertet sondern nur die Befehle die auf die Variable wirken.
   Bei einem Umweg über Dummys wird der sich wiederholende "set on" Befehl mit durchgereicht.

ZitatEs müsste ja sonst erst geprüft werden welchen Zustand das Device hat und danach müsste FHEM entscheiden ob das Notify ausgelöst wird oder nicht.
Einfacher ist es doch das Notify bei zutreffendem Regexp aus zu lösen und dem Anwender die Entscheidungsfreiheit zu lassen was danach passieren soll.

Wenn man das ganze Steuerungstechinsch betrachtet wäre es meiner Meinung einfacher weil logischer den Status der Variable auszuwerten und nicht den Befehl der auf sie wirkt.
Die Möglichkeiten und die Entscheidungsfreiheit des Anwenders wird sogar noch erhöht, siehe meinen Fall als Beispiel.

Evtl. liege ich ja völlig daneben aber bis jetzt hat mir hier noch niemand eine brauchbare Lösung für mein Stromstossschalterproblem aufgezeigt.
 
Hab folgende vorläufige Notlösung:
define Arduino2_notify notify IN3.*off { if (Value("OUT05") eq "Aus") { fhem "set OUT05 An"} else { fhem "set OUT05 Aus"} }

der off Befehl wird anscheinend nur einmal gesetzt, wenn der Taster aus ist.

Leider ist das nicht die optimale Bedienung für eine Lichtsteuerung, und weitere Möglichkeiten wie Taster lange drücken, Taster kurz drücken fallen auch flach.

Gruesse
 McBain
 

Puschel74

Hallo,

zu

ZitatEvtl. liege ich ja völlig daneben aber bis jetzt hat mir hier noch niemand eine brauchbare Lösung für mein Stromstossschalterproblem aufgezeigt.

kann ich nur sagen:

ZitatDie einzige Möglichkeit, die ich sehe, ist den Taster zu entprellen.

Dafür das der Taster am Eingang prellt und on/off/on/off/on an fhem gesendet wird kann fhem nichts.

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.

mcbain2k

Hallo



Es liegt leider nicht am Taster, der prellt definitiv nicht.

define Arduino2_notify notify IN3.*off { if (Value("OUT05") eq "Aus") { fhem "set OUT05 An"} else { fhem "set OUT05 Aus"} }

funktioniert ja auch, und würde nicht funktionieren wenn der Taster prellt.



Gruesse

 McBain


mcbain2k

So hab das Problem jetzt soweit eingegrenzt um sagen zu können,

dass es an daran liegt, dass Fhem IN3 solange der Taster gedrückt ist alle paar Millisekunden auf on setzt.

Bei jedem on von IN3 erfolgt eine Umschaltung des OUT05 (Relais), dh. das Relais rattert wie ein MG.

Wie kann ich Fhem jetzt dazu überreden, IN3 nur einmal pro Druck auf den Taster auf on zu setzen?


define IN3 FRM_IN 3
attr IN3 room Arduino
attr IN3 stateFormat reading

define OUT05 FRM_OUT 26
attr OUT05 devStateIcon An:FS20.on Aus:FS20.off
attr OUT05 eventMap off:Aus on:An
attr OUT05 restoreOnReconnect off
attr OUT05 restoreOnStartup off
attr OUT05 room Arduino
attr OUT05 stateFormat value

define Arduino2_notify notify IN3.*on { if (Value("OUT05") eq "Aus") { fhem "set OUT05 An"} else { fhem "set OUT05 Aus"} }




MFG
 McBain

Puschel74

Hallo,

ZitatWie kann ich Fhem jetzt dazu überreden, IN3 nur einmal pro Druck auf den Taster auf on zu setzen?

Äh, gar nicht?
FHEM setzt IN3 sicher nicht auf on - das macht der Arduino.
FHEM bekommt nur den Trigger mit das IN3 flattert und reagiert entsprechend des Notify.

Zitatdass es an daran liegt, dass Fhem IN3 solange der Taster gedrückt ist alle paar Millisekunden auf on setzt.
Wie gesagt.
FHEM setzt IN3 nicht auf on - das macht der Arduino resp. der Taster der an IN3 angeschlossen ist.

Das einzige was FHEM macht ist den Ausgang setzen - wobei ich die Zykluszeit von FHEM auf deiner Plattform nicht kenne.

Aber wenn am Taster ja nix prellt kann es nur dran liegen das FHEM den Eingang des Arduino auf on setzt - alle paar Millisekunden.

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.

mcbain2k

Hallo,

Äh, gar nicht?
FHEM setzt IN3 sicher nicht auf on - das macht der Arduino.
FHEM bekommt nur den Trigger mit das IN3 flattert und reagiert entsprechend des Notify.


Bist Du dir ganz sicher???
IN3 ist immerhin eine Fhem-Dummy und der Arduino teilt Fhem ja nur mit das PIN3 on ist der weiß gar nichts von IN3.

FHEM bekommt nur den Trigger mit das IN3 flattert und reagiert entsprechend des Notify.

Flattert? Da flattert nichts. IN3 wird von on auf on gesetzt, eigendlich keine Änderung des Zustandes.
Für Fhem aber anscheinend schon, leider.

Aber wenn das nicht der Lösungsansatz ist, wo liegt dann der Hund begraben?  

MFG
 McBain


   

Puschel74

Hallo,

ich mach mir nochmal die Mühe ...

lt. dem hier

define IN3 FRM_IN 3
attr IN3 room Arduino
attr IN3 stateFormat reading

define OUT05 FRM_OUT 26
attr OUT05 devStateIcon An:FS20.on Aus:FS20.off
attr OUT05 eventMap off:Aus on:An
attr OUT05 restoreOnReconnect off
attr OUT05 restoreOnStartup off
attr OUT05 room Arduino
attr OUT05 stateFormat value


ist IN3 ein digitaler Eingang am Arduino - ich seh hier keinen dummy.

ZitatFlattert? Da flattert nichts.
ZitatEs liegt leider nicht am Taster, der prellt definitiv nicht.
Dann poste mal bitte das Bild deines Speicheroszis welches auf steigende Flanke triggert während du den Taster betätigst.
Der Eingang des Oszi muss natürlich mit IN3 oder, besser gesagt, mit dem Eingang des Arduino verbunden sein an dem der Taster angeschlossen ist.

Oder woher weißt du das der Taster definitiv nicht prellt?

Für mich stellt sich dein Aufbau so dar:

Taster am Eingang IN3 des Arduino ---- Verbindung mit dem Netzwerk(?) --- fhem-Server
Relais am Ausgang OUT5 des Arduino ---|

Oder läuft bei dir fhem auf dem Arduino?

Da ich aber leider keinen Arduino besitze sondern nur einen AVR-NET-IO werde ich dir nun nicht mehr weiter helfen können da
ich deinen Aufbau nicht nachstellen (und auch nicht so ganz nachvollziehen) kann.

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.

mcbain2k

Hallo,
also erstmal danke für deine Mühe,

Zitatist IN3 ein digitaler Eingang am Arduino - ich seh hier keinen dummy.
Stimmt, dummy ist falsch muss Variable heissen.


Aufbau
Taster -- Entprellung Pulldown-- am Pin 3 des Arduino ---- USB --- fhem-Server Variable IN3
fhem-Server Variable OUT5   ---- USB ---  Pin 26 des Arduino --- Optokoppler---Relais

Taster prellt nicht weil:
Taster wurde Hardwaremäße plus Pulldown entprellt http://blog.cc-robotics.de/2007/03/25/entprellung-ohne-flipflop/.
Funktioniert auch direckt an einem anderen Arduino mit eigenem Programm prellfrei.
Schaltung regiert immer gleich auch nach langem gedrückt halten die gleiche schnelle aus an Folge des Relais
Bei prüfen des notify auf aus
define Arduino2_notify notify IN3.*off
was ohne prellen funktioniert hat.


MFG
 McBain

 


Puschel74

Hallo,

ZitatIN3 wird von on auf on gesetzt, eigendlich keine Änderung des Zustandes.
Für Fhem aber anscheinend schon, leider.

Das ist auch für FHEM keine Änderung des Zustandes.
FHEM reagiert im notify nur auf den regexp - und der lautet .on
FEHM ist es erstmal egal wie der Zustand vorher war (oder jetzt ist).
Wenn IN3 auf on gesetzt wird löst das notify aus, auch wenn der Zustand vorher schon on war da das regexp auf on lautet (ich, für meinen Teil, bin froh das das so ist).

Aber ich denke ich komme langsam drauf was das Problem bei dir ist.
Leider liegt es nicht an fhem sondern am Code.

define Arduino2_notify notify IN3.*on { if (Value("OUT05") eq "Aus") { fhem "set OUT05 An"} else { fhem "set OUT05 Aus"} }

Das notify löst immer aus wenn (warum eigentlich IN3.*on??) IN3:on.*
Du lässt prüfen ob OUT5 eq AUS ist, wenn nicht wird OUT5 An sonst AUS.
Für den Ablauf heisst das (Zykluszeit berücksichtigen!) - sobald IN3 auf on geht prüft fhem ob der Status von OUT5 eq Aus ist.
Wenn ja wird OUT5 auf An gesetzt sonst auf Aus.
Wenn du lange genug auf dem Taster bleibst (IN3 = on) kommt fhem wieder in die If-Abfrage und sieht jetzt
OUT5 ist An (also ungleich Aus) und der Else-Zweig wird abgearbeitet - OUT5 wird auf Aus gesetzt.
Nun bist du aber immer noch am Taster (IN3 = on) und das notify löst wieder aus.
OUT5 ist jetzt Aus daher wird fhem "set OUT05 An" ausgeführt.
Und so weiter und so weiter - das Relais rattert.

Dahingehend hast du recht - der Taster prellt nicht.
Sorry das war mein Fehler - das Verhalten des Notify hab ich nicht von Anfang an (im Kopf) durch gearbeitet.

Ich werd mal in einer ruhigen Minute grübeln wie der Code umgeschrieben werden kann damit OUT5 toogled und nicht rattert.
Evtl. kommt mir ja jemand zuvor ;-)

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.

mcbain2k

Hey Puschel,

das ist genau das was ich auch denke.



Mir sind bis jetzt auch nur Notlösungen eingfallen.

- IN3.*off abfragen, wie schon beschrieben.

- beim auslösen des notify wird ein dummy für z.B. eine Sekunde auf ein gesetzt welcher dann das notify sperrt.

- Kerzen aufstellen.