DS2408 Ports aufsplitten

Begonnen von rebs88, 11 November 2013, 10:27:23

Vorheriges Thema - Nächstes Thema

justme1968

bau mal bitte einen else ganz ans ende und dort ein Log 3, $CMD; ein. ich glaube in CMD steht etwas was du nicht erwartest.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

eldrik

Hey,

Mach ich noch, ich glaub ich bin aber auch schon einen Schritt weitergekommen, morgen gehts weiter!

Danke schon einmal..

Gruß
Jens

eldrik

Hi,

Zwischenstand, ich habe es jetzt hinbekommen, es war tatsächlich noch eine Anweisung und eine Verschachtelung nicht korrekt. :)

Nun stehe ich aber vor einem weiteren Problem, ich hänge den entschlackten Code noch einmal an:

Problem: starte ich über fhemweb eine hoch oder runter fahrt und möchte diese zwischenzeitlich stoppen, rufe ich das stop Kommando auf, die vorherigen hoch oder runter fahrten sind aber so geschrieben, dass nach einem definierten Zeitwert 60 Sekunden die 1Wire Zustände so gesetzt werden, dass die normale rauf oder runterfahrt bzw. die Freigabe von 230V, vor der in der Hardware definierten Sicherheitsspanne von 1 1/2 Minuten beendet werden, durch den Motorendschalter wird der Rollladen natürlich schon vorher gestoppt.

Stoppe ich jedoch über fhemweb läuft die vorher abgesetzte hoch oder runter Schleife ja noch und so kann es sein, dass dann doch noch der Block abgearbeitet wird, der die Fahrt normalerweise beenden sollte, durch das bereits abgearbeitete stop wird nun jedoch wieder eine fahrt ausgelöst  :(

Daher meine Frage, kann ich das vorher gestartete fhemweb Programm irgendwie über den stop Befehl vorzeitig beenden oder kann man hier keinen Einfluss drauf nehmen?

Die Konstellation sollte zwar höchst selten vorkommen, doch möchte ich diese trotzdem irgendwie abfangen können.

Ich habe die Stellen im Code mal kommentiert, in fhem fehlen diese natürlich.

{
my $window_contact = ReadingsVal("Contact_OG_rechts1","sensed.4","0");
my $window_opener = "Rollladen_Gaestezimmer_rechts";
my $window_shutter = "Rollladen_Bad_klein";
my $duration_shutter = 60;
my $duration_opener = 15;
my $duration_pause = 0.1;

if ($CMD eq "stop") {
fhem
"set $window_shutter PIO.ALL 1,1; #hier wird die derzeit aktive Fahrt beendet
sleep $duration_pause;
set $window_shutter PIO.ALL 0,0"; #hier wird das 1Wire Device wieder in den Ruhezustand überführt


} elsif ($CMD eq "hoch") {
fhem
"set $window_shutter PIO.ALL 1,0"; #es beginnt das Rauffahren
if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter; #vorher definierte Zeitspanne ab der die Fahrt beendet werden soll
set $window_shutter PIO.ALL 1,0; #erneute Ausführung des Kommandos hält das Device an
sleep $duration_pause;
set $window_shutter PIO.ALL 0,0"; #hier wird das 1Wire Device wieder in den Ruhezustand überführt
}
} elsif ($CMD eq "runter") {
fhem
"set $window_shutter PIO.ALL 0,1";
if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter; #vorher definierte Zeitspanne ab der die Fahrt beendet werden soll
set $window_shutter PIO.ALL 0,1; ##erneute Ausführung des Kommandos hält das Device an
sleep $duration_pause;
set $window_shutter PIO.ALL 0,0"; #hier wird das 1Wire Device wieder in den Ruhezustand überführt
}
}

}


Greetz
Eldrik

justme1968

du verwendest im fhem teil sleep. das sleep ist fhem intern so implementiert das ein temporäres at angelegt wird das dann alles was hinter dem sleep kommt ausführt.

statt das fhem sleep zu verenden musst du alles was verzögert werden soll selber in so ein temporäres at verpacken. dann weisst du wie es heisst und kannst es mit delete einfach löschen wenn du es nicht mehr ausgeführt haben willst.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

eldrik

Hey,

also in meinem Programm ein temporäres at per define erstellen und aufrufen und in anderen Situationen löschen?

Greetz
Eldrik

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Potti63

Hallo,
ich nutze die Ports A,B,C,D als Ausgänge und E,F,G,H als Eingänge. Es hat eine Woche gedauert um über die Eingänge ein Ausgang zu schalten. Habe fast alle Beiträge im Zusammenhang mit DS2408, sowie WIKI und usw. gelesen und durch probieren zum jetzigen Ergebnis gekommen. Jetzt möchte ich noch den Eingängen (Ports E-H)  Icon AUS-AN zuordnen um den Status grafisch darzustellen. Für die Ausgänge ist es mir dank dieser Beiträge gelungen. Anbei meine Code:

Für Ausgang B

define OWX2KB readingsProxy OWX2:B
attr OWX2KB devStateIcon off:general_aus on:general_an
attr OWX2KB room OWX
attr OWX2KB setFn {($CMD eq "on")?"output B on":"output B off"}
attr OWX2KB setList on off
attr OWX2KB valueFn {($VALUE eq "ON")?"on":"off"}
attr OWX2KB webCmd on:off


Für Eingang H

define Terassentuer_zu readingsProxy OWX2:H
attr Terassentuer_zu room OWX
attr Terassentuer_zu devStateIcon off:general_aus on:general_an
attr Terassentuer_zu setFn {($CMD eq "on")?"output H on":"output H off"}
attr Terassentuer_zu setList on off
attr Terassentuer_zu valueFn {($VALUE eq "on")? "on":"off"}
attr Terassentuer_zu webCmd on:off

und das Schalten

define Tuer1_zu DOIF ([OWX2:H] eq "ON1" and [OWX2:G] eq "ON1") (set OWX2KB on) DOELSE (set OWX2KB off)
attr Tuer1_zu room OWX

Danke im Voraus

justme1968

für eingänge brauchst du keine setFn und keine setList und kein webCmd und auch kein DOIF.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Potti63

Hallo justme,
setFn und setList sowie webCMD waren nur meine Versuche irgendwie mit Icons AUS - AN den Zustand des Eingangs darzustellen. Der DOIF ist zum schalten des Ausgangs B. B wird als Status Anzeige mit LED verwendet. Mein Problem ist, dass die Icons für die Eingänge nicht dem Status on oder off folgen.

Gruß und Danke

justme1968

zeig mal bitte ein list auf das original device und den readingsProxy in beiden zuständen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Potti63

Hallo,
mein OWSWITCH

define OWX2 OWSWITCH DS2408 68BA0E000000 10
attr OWX2 IODev 2wire
attr OWX2 model DS2408
attr OWX2 room OWX
#attr OWX2 IODev OWio
attr OWX2 stateS


# Eingang G Seitentür - Überwachung

define Seitentuer_zu readingsProxy OWX2:G
attr Seitentuer_zu room OWX
attr Seitentuer_zu valueFn {($VALUE eq "on")?"on":"off"}
attr Seitentuer_zu webCmd on:off

# Eingang H Terassentür - Überwachung

define Terassentuer_zu readingsProxy OWX2:H
attr Terassentuer_zu room OWX
attr Terassentuer_zu devStateIcon off:general_aus on:general_an
#attr Terassentuer_zu setFn {($CMD eq "on")?"output H on":"output H off"}
#attr Terassentuer_zu setList on off
attr Terassentuer_zu valueFn {($VALUE eq "on")? "on":"off"}
#attr Terassentuer_zu webCmd on:off

Ich bin noch Anfänger und auch kein Programmierer. Wie gesagt, um diese LED Ein- und Ausschalten habe ich fast eine Woche gebraucht und mehr als 100 Beiträge zu OWSWITCH gelesen. Leider habe ich kein Beispiel für Icons im Bezug auf Eingänge gefunden
Gruß

Potti63

Hallo

ich war nicht zu Hause am Wochenende.
Hier ist mein list und readingsProxy in beiden zuständen

list OWX2
Internals:
   ASYNC      0
   DEF        DS2408 68BA0E000000 10
   INTERVAL   10
   IODev      2wire
   NAME       OWX2
   NOTIFYDEV  global
   NR         41
   NTFY_ORDER 50-OWX2
   OW_FAMILY  29
   OW_ID      68BA0E000000
   PRESENT    1
   ROM_ID     29.68BA0E000000.A6
   STATE      A: OFF B: ON C: OFF D: OFF E: OFF F: OFF G: ON1 H: ON1
   TYPE       OWSWITCH
   Readings:
     2015-09-21 16:00:37   A               OFF
     2015-09-21 16:00:37   B               ON
     2015-09-21 16:00:37   C               OFF
     2015-09-21 16:00:37   D               OFF
     2015-09-21 16:00:37   E               OFF
     2015-09-21 16:00:37   F               OFF
     2015-09-21 16:00:37   G               ON1
     2015-09-21 16:00:37   H               ON1
     2015-09-21 16:00:37   state           A: OFF B: ON C: OFF D: OFF E: OFF F: OFF G: ON1 H: ON1
   owg_val:
     1
     0
     1
     1
     1
     1
     0
     0
   owg_vax:
     1
     0
     1
     1
     1
     1
     1
     1
Attributes:
   IODev      2wire
   model      DS2408
   room       OWX
   stateS     1


Readings (Eingänge G und H kurzgeschlossen)

A OFF B: ON C: OFF D: OFF E: OFF F: OFF G: ON1 H: ON1 2015-09-21 16:22:07

B ON   2015-09-21 16:22:07

C OFF  2015-09-21 16:22:07

D OFF  2015-09-21 16:22:07

E OFF  2015-09-21 16:22:07

F  OFF  2015-09-21 16:22:07

G  ON1  2015-09-21 16:22:07

H  ON1  2015-09-21 16:22:07


state

A: OFF B: ON C: OFF D: OFF E: OFF F: OFF G: ON1 H: ON1

lReadings  (Eingänge G und H offen)


A OFF B: OFF C: OFF D: OFF E: OFF F: OFF G: OFF H: OFF  2015-09-21 16:28:47

B  OFF  2015-09-21 16:28:47

C  OFF  2015-09-21 16:28:47

D  OFF  2015-09-21 16:28:47

E  OFF  2015-09-21 16:28:47

F  OFF  2015-09-21 16:28:47

G  OFF  2015-09-21 16:28:47

H  OFF  2015-09-21 16:28:47


state

A: OFF B: OFF C: OFF D: OFF E: OFF F: OFF G: OFF H: OFF

2015-09-21 16:28:47

Prof. Dr. Peter Henning

Und was bitte ist die konkrete Frage ?

LG

pah

Potti63

Hallo,
ich nutze die Ports A,B,C,D als Ausgänge und E,F,G,H als Eingänge.  Den Ausgängen kann die Icons "Aus/AN" zuordnen aber bei den Eingängen funktioniert es nicht.  Wie muss ich den Status der Ports den Icons zuordnen?