DS2408 Ports aufsplitten

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

Vorheriges Thema - Nächstes Thema

rebs88

Hallo,
ich habe einen DS2408 ins FHEM integriert, und kann die Ports mit
set OWIO_01 output Lampe1 on
set OWIO_01 output Lampe1 off
ein und ausschalten. Der Kanal A ist als Lampe1 definiert.

Aber nun zu meiner Frage, wie kann ich denn nun den Port im Floorplan schalten, also das ich für jeden Kanal ein eigenes Lampensymbol habe oder einen on/off Schalter?

Ich hoffe mir kann jemand weiterhelfen und bedanke mich schonmal für eure Antworten.

Gruß
Arnold
- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

justme1968

das reine anzeigen kannst du mit jeweils einer readingsGroup machen. wenn du auch schalten möchtest musst du dir zur zeit noch zwei dummys dafür anlegen und mit dem original device über notify synchronisieren. readingaGroup kann (zur zeit) leider nur state schalten.

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

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

rebs88

Ohje :-\
Was meinst du mit Dummys anlegen?
Ist es dann so das einer dieser "Dummy"s die Anzeige macht und einer den Schalter?
Sorry, bin neu in der FHEM Sache ;-)

Gruß und Danke
- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

justme1968

#3
fhem kann icons (und vor allem anklickbare) nur pro device darstellen. d.h. um zwei getrennte icons zu bekommen die anklickbar sein sollen brauchst du zwei devices. das sind normaler weise dummy devices.

mir fällt aber gerade noch eine lösung ein schau mal ob du deinen 1-wire schalter noch ein zweites mal anlegen kannst. wenn das geht brauchst du keine dummys sondern kannst dir jeweils das 1-wire device mit stateFotmat,devSateIcon und webCmd so ok figurieren das es nur für einen kanal zuständig ist.

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

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

rebs88

Hallo,

ich glaub ich hab es verstanden:
Also ich habe den DS2408 (8fach IO), den müsste ich dann 8 mal anlegen (immer mit anderem Namen??) und auch 8 Schalter definieren(die am besten den gleichen Namen haben wie der definierte Schalter).

Leider sagen mir die Begriffe stateFormat,devStateIcon und webCommand nicht allzuviel, aber ich werde es heut Abend mal probieren.

Gruß Arnold
- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

ntruchsess

Das Mehrmalsanlegen solltest Du lassen, das kommt sicher mit der Discovery bei OWX-Start in Konflikt. Wäre auch ineffektiv, weil OWX das physikalisch ja nur einmal vorhandene Device dann mehrmals redundant pollen würde. Und spätestens beim set wäre es ganz aus, weil die Ausgabepins ja in einem gesharten Register verwaltet werden und die FHEM-Devices nichts voneinander wissen.

Die Discovery möchte/werde ich bei Gelehenheit so umgestalten, dass sie sicherstellt, dass eine Device-id FHEM-weit nur einmal vorkommen kann. Dann könnte man ein 1-Wire Device von einem Bus auf einen anderen umhängen und OWX würde es automatisch dem richtigen OWX-Device zuordnen, ohne dass die Einstellungen verlorengingen. Mehrere Busse ist jetzt nicht so abwegig, wenn man Arduinos oder DS2482-800 als Busmaster benutzt.

- Norbert
while (!asleep()) {sheep++};

ntruchsess

Ich habe aber auch schon darüber nachgedacht, ob ich OWSWITCH nicht selber pro verwaltetem PIN ein FHEM-Device anlegen lassen würde - ähnlich wie man es beim FRM mit FRM_IN und FRM_OUT macht. Analoges für OWAD. Mehrere unabhängig nutzbare Funktionen in einem Device sind immer irgendwie unhandlich... Das ist jetzt aber ein bischen Zukunftsmusik, erst muss der asynchrone Modus released werden...

- Norbert
while (!asleep()) {sheep++};

rebs88

Hallo Norbert,

ok, dann versuch ich das erst gar nicht mit dem mehrfachen Anlegen.

Heißt das dann das es im Moment keine Möglichkeit für mich gibt die Ports des DS2408 aus dem "Floorplan" zu schalten?

mfg und Danke
- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

justme1968

#8
dann bleibt bis norbert das aufteilen der pins auf einzelne devices eingebaut hat nur die möglichkeit über dummys.

dazu ist aber etwas handarbeit nötig. zu den stichwörtern von oben findest du erklärungen im einsteiger PDF und in der commandref.

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

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

det.

#9
Zitat von: ntruchsess am 11 November 2013, 14:04:46
...ob ich OWSWITCH nicht selber pro verwaltetem PIN ein FHEM-Device anlegen lassen würde - ähnlich wie man es beim FRM mit FRM_IN und FRM_OUT macht. Analoges für OWAD. Mehrere unabhängig nutzbare Funktionen in einem Device sind immer irgendwie unhandlich...
- Norbert
Hallo Norbert,
das klingt nach einer hervorragenden Idee! Ich habe da bisher immer auf die kostengünstige Variante mit 8fach Switches verzichtet und die 2fachen genommen. Aber auch bei denen sind die Aufgaben der 2 Kanäle oft nicht miteinander verwandt.
LG
det.

rebs88

Hallo,

wie bekomme ich denn das mit wenn die Ports "einzeln" geschaltet werden können, also mit einem eigenen Symbol

Gruß
- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

Prof. Dr. Peter Henning

Eine Aufteilung der Ports auf verschiedene Devices halte ich nicht für sinnvoll, das widerspricht auch ganz extrem der Philosophie des 1-Wire bus.

Viel besser wäre es, wenn wir ein neues generisches OW-Modul schreiben: OWPROXY sollte es ermöglichen einzelne Kanäle von Schaltern, AD-Wandlern etc. als separate FHEM-Devices zu behandeln.

LG

pah

justme1968

ich habe gerade ein solches generisches proxy modul in arbeit.

damit kann man einen beliebigen teil eines readings aus einem device zu einem neuen fhem device machen und über get, set und value proxies auch bedienen.

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

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

justme1968

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

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

Prof. Dr. Peter Henning

Klingt gut, so habe ich mir das vorgestellt.

LG

pah

rebs88

#15
Kann das so funktionieren? (siehe Code)
Wo/Wie finde ich dann diesen myProxy?
Ich steh glaub ich voll auf der Leitung  :P

define OWX2 OWSWITCH DS2408 76430D000000
attr OWX2 IODev OWio
attr OWX2 model DS2408
attr OWX2 room OWX

define myProxy readingsProxy OWX2:latch.A
attr myProxy valueFn {($VALUE == 1)?"on":"off"}

- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

justme1968

ja. so in der art funktioniert es.

du findest ihn wie jedes andere device das du definierst. ich glaube diese frage verstehe ich nicht.

wenn das device nicht da ist ist beim anlegen etwas schief gegangen. schau im log ob du etwas siehst.

gruss
  andre

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

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

rebs88

#17
okay, jetzt isser da  :)

aber wenn ich jetzt auf on oder off klicke, dann kommt:
"Unknown argument on, choose one of "

hat denn das noch niemand mit dem DS2408 gemacht?
Wäre superdankbar wenn das jemand zur Verfügung stellen würde

Grüße
- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

justme1968

du musst über das setList attribut sagen das es ein on und off kommando gibt und über die setFn sagen was jeweils passieren soll.

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

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

rebs88

TADAAA, ich habs geschafft  ;D ;D ;D
Dann erscheint ein "Button" namens OWX2KA der die output-Befehle "output A off" und "output A on" ausführen kann.

define OWX2 OWSWITCH DS2408 76430D000000 6
attr OWX2 IODev OWio
attr OWX2 model DS2408
attr OWX2 room OWX

define OWX2KA readingsProxy OWX2:latch.A
attr OWX2KA devStateIcon on:shutter_closed
attr OWX2KA fp_GrundrissEG 50,100
attr OWX2KA icon close
attr OWX2KA room OWX
attr OWX2KA setFn {($CMD eq "on")?"output A off":"output A on"}
attr OWX2KA setList on off
attr OWX2KA valueFn {($VALUE == 0)?"off":"on"}
attr OWX2KA webCmd on:off


Voll der Wahnsinn, es geht  ;D ;D ;D ;D ;D ;D ;D ;D


DANKE für die Unterstützung
- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

Tobias

#20
Hi,
ich möchte ein on-for-timer absetzen. Leider stell ich mich wohl zu dusselig an.... Warum funktioniert es nicht? Finde den Fehler nicht :(
attr Schalter_rechts_2 setfn {"output B $CMD"}
attr Schalter_rechts_2 setList ON OFF on-for-timer

set Schalter_rechts_2 on-for-timer 10
OWSWITCH: Wrong data value , must be time format xx:xx:zz or integer


Das korrekte KOmmando lautet für meinen DS2408:
set Schalter_rechts output B on-for-timer 10
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

justme1968

on-for-timer muss nicht in der setList auftauchen und nicht in der setFn behandelt werden.

sobald on und off da ist (und über die setFn implementiert ist) geht on-for-timer über dir setExtentions automatisch.

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

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

Tobias

Zitat von: justme1968 am 15 Dezember 2013, 09:36:58
sobald on und off da ist (und über die setFn implementiert ist) geht on-for-timer über dir setExtentions automatisch.

ahhh, danke.... mit "on off" gehts jetzt, ich hatte aber "ON OFF" definiert, und da ging es nicht. Gut zu wissen ;)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

eldrik

Hi,

Wie kann ich denn zwei Set Befehle absetzen? z.B für meinen 1Wire Rolladenaktor PIO.A 0 und PIO.B 1 für runter...

Greetz
Eldrik

justme1968

einfach in der setFn beides machen und undef zurückgeben.

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

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

eldrik

so richtig Blick ich es jetzt nicht.

Folgendes hab ich in setFn

{($CMD eq "open")?"PIO.A 1 PIO.B 0":"PIO.A 0 PIO.B 1"}

als Output erhalte ich set Rollladen_Bad_klein needs two arguments

Greetz
Eldrik

justme1968

etwa so:{if($CMD eq "open"){CommandSet(undef,"$DEVICE PIO.A 1"); CommandSet(undef,"$DEVICE PIO.B 0");} else {CommandSet(undef,"$DEVICE PIO.A 0");CommandSet(undef,"$DEVICE PIO.B 1");} return undef;}

das ganze wird übersichtlicher wenn du die beiden CommandSet in eine kleine routine in 99_myUtils.pm auslagerst.

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

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

eldrik

Klasse!

Jetzt hat es sich mir erschlossen.

Danke.

Tobias

Hi Andre,
Danke für die Info... Allerdings hast du mit dem Codebeispiel mit dem CommandSet Befehl neue Fragen aufgeworfen. Den kenne ich nämlich (noch) nicht... Steht auch nicht im Wiki
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

justme1968

#29
nimm statt dessen fhem("set ...") und vergiss das du etwas anderes gesehen hast :)

im ernst: es ist die interne funktion die aufgerufen wird wenn ein 'set ...' erkannt wurde.

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

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

justme1968

@rebs88,@Tobias und @eldrik: könntet ihr mir bitte eure beispiele ein mal komplett mit kurzer beschreibung und screenshot schicken? dann mache ich eine wiki seite wie für die readingsGroup auch.

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

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

rebs88

- Raspberry 512MB
- COC mit RF,Uhr und EEprom (busware.de)
- Homematic HM-LC-BI1PBU-FM Rolladenschalter und Aktor
- 1-Wire - OW - DS2408 am LinkUSBi (als OWSwitch) definiert
- 1-Wire - OW - DS18B20 amLinkUSBi als OWTHERM definiert

Petrosilius Zwackelmann

#32
Hallo FEHEM-Gemeinde,

auch ich will gerade die Kanäle des 2408 aufsplitten. Da habe ich mich über die Codebeispiele gefreut, damit geht das Schalten der Kanäle problemlos.

Ich stolpere jetzt nur über das Problem dass "devStateIcon" nicht wie gewünscht funktioniert.
Dies scheint daran zu liegen dass das Reading "state" dauerhaft auf "off" bleibt.
Kann mir da jemand einen Tipp geben?


define switch_BEWAESSERUNG OWSWITCH DS2408 BDD510000000
attr switch_BEWAESSERUNG IODev 1wire
attr switch_BEWAESSERUNG model DS2408
attr switch_BEWAESSERUNG room AUSSEN


define Ventil_1 readingsProxy switch_BEWAESSERUNG:latch.A
attr Ventil_1 devStateIcon off.*:general_aus on.*:general_an
attr Ventil_1 group Bewässerung
attr Ventil_1 icon sani_sprinkling
attr Ventil_1 room AUSSEN
attr Ventil_1 setFn {($CMD eq "on")?"output A on":"output A off"}
attr Ventil_1 setList on off
attr Ventil_1 valueFn {($VALUE == 0)?"off":"on"}
attr Ventil_1 webCmd on:off
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

justme1968

welche readings hat denn dein DS2408? stehen dort die latch.X readings so wie sie sollen? was passiert wenn du pio.X statt latch.X verwendest ?

devStateIcon sollte glaube ich jeweils ohne das .* definiert werden. STATE ist ja on oder off ohne noch etwas dahinter.

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

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

Petrosilius Zwackelmann

Hallo Andre,

danke für deine Unterstützung.
Zitatwelche readings hat denn dein DS2408? stehen dort die latch.X readings so wie sie sollen?
bisher hatte ich Readings wie latch.X (siehe Bild)

Zitatwas passiert wenn du pio.X statt latch.X verwendest ?
Bei Verwendung von pio statt latch ist die Funktion weiterhin gegeben... Die Kanäle des DS2408 werden geschalten, die devIcons gehen aber nicht.

ZitatdevStateIcon sollte glaube ich jeweils ohne das .* definiert werden. STATE ist ja on oder off ohne noch etwas dahinter.
Dies bringt keine Änderung im Verhalten on.* würde nach meinem Verständnis auch bei on-for-timer funktionieren...

Gruß Manuel
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

justme1968

ich meinte die readings im original device (also switch_BEWAESSERUNG). gibt es da die latch.X readings und haben sie da den richtigen status. (oder du hast das bild vergessen)

bitte bau in deine valueFn mal ein Log 3, ">$DEVICE:$READING:$VALUE<";vor dem if ein.

ja. das on.* matched auch auf on-for-timer. aber diesen status wird dein device nie haben weil das on-for-timer über die SetExtension nur emuliert wird. der status wird auch bei on-for-timer nur on sein. den status on-for-timer gibt es nur bei fs20.

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

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

Petrosilius Zwackelmann

Hallo Andre,

ok, nun das Bild vom Original-Device im Anhang. Da ist nix mit Latch... ?

Mein valueFn sieht so aus (also ohne ein if)
attr Ventil_1 valueFn {($VALUE == 0)?"off":"on"}

Ich habe verschiedene Versuche unternommen die LOG Zeile einzubauen... immer mit Fehlermeldung z.B.

attr Ventil_1 valueFn Log 3, ">$DEVICE:$READING:$VALUE<";{($VALUE == 0)?"off":"on"}
Global symbol "$VALUE" requires explicit package name at (eval 21138) line 1, <> line 112.

Gruß Manuel
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

justme1968

valueFn funktioniert so das sie das reading das du bei der definition des readingsProxy angibst nimmt und daraus den state erzeugt.

dazu musst du natürlich ein reading verwenden das dein original device auch hat. bei OWDevice wäre das latch.X. du scheinst aber OWSWITCH zu verwenden. dann ist es einfach nur A oder B, ... oder Ventil1, ...

entsprechend den möglichen werten (scheinbar ON und OFF) musst deine valueFn dann etwa so aussehen:attr Ventil_1 valueFn {($VALUE eq "OFF")?"off":"on"}

die fehler kommen weil das Log... hinter die { gehört hätte.

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

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

Petrosilius Zwackelmann

Hallo Andre,

nun hab ich es hinbekommen...
Danke für die Unterstützung.

Sonderbar sind die Originalreadings von OWSWITCH mit ON für off und ON für on.


define Ventil_1 readingsProxy switch_BEWAESSERUNG:A
attr Ventil_1 devStateIcon off:general_aus on:general_an
attr Ventil_1 group Bewässerung
attr Ventil_1 icon sani_sprinkling
attr Ventil_1 room AUSSEN
attr Ventil_1 setFn {($CMD eq "on")?"output A on":"output A off"}
attr Ventil_1 setList on off
attr Ventil_1 valueFn {($VALUE eq "ON")?"on":"off"}
attr Ventil_1 webCmd on:off
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

Prof. Dr. Peter Henning

Sonderbar ist darangar nichts. ON mit Pfeil nach unten bedeutet, dass der Ausgang extern kurzgeschlossen ist - ein Setting OFF nutzt also dafür gar nichts.

LG

pah

Petrosilius Zwackelmann

Hallo pah,

für den Laien bleit es sonderbar..
Ich spiele gerade mit einem Fertigmodul von eservice-online, alle Relaisausgänge sind derzeit unbeschalten.
Um einen Kurzschluss zu erkennen müsste ein Ausgang doch erst Rückgelesen werden. Das geht sicherlich mit einem DS2408, aber bei diesem 8-fach Schaltmodul dürfte das nicht gehen.

http://www.eservice-online.de/out/media/Anschlussplan%281%29%281%29%281%29%281%29%281%29%281%29%281%29%281%29%281%29%281%29%281%29%281%29%281%29%281%29.pdf

Gruß Manuel
FHEM 6 auf RaspPi V3:
HM_LAN / CUNX / HUEBridge /OneWire / Homebridge / SONOS / Harmony

Prof. Dr. Peter Henning

Wenn das Modul OWSWITCH einen DS2408 erkennt, ist auch ein solcher verbaut.

Der Kurzschluss betrifft natürlich nicht die Relaisausgänge - sondern die Ausgänge des DS2408. Und diese werden natürlich gelesen...

Für einen solchen Kurzschluss reicht bei der Hochohmigkeit des Ausgangs bereits ein Widerstand von ein paar kOhm gegen Masse und eine fehlende Versorgungsspannung der Relais.

LG

pah

eldrik

@ andre

ich wollte die Tage meine Rollladensteuerung (bisher hoch runter über if else) um ein stop erweitern, bekomme bei meiner neuen if, elsif, else Konstruktion bei der Fhemweb Auswahl ungleich stop, jedoch direkte Meldungen vom 1Wire Device!

Gehen nicht mehr als zwei Werte, für setList, die über if else unterschieden werden können oder liegt es an meiner Konstruktion?

{
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 = 100;
my $duration_opener = 15;
my $duration_pause = 0.2;

if ($CMD eq "stop") {
fhem
"set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";


} elsif ($CMD eq "hoch") {
if ($window_contact == 1)
{
fhem
"set $window_shutter PIO.A 1;
sleep $duration_pause;
set $window_shutter PIO.A 0";

if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter;
set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";
}
}
} elsif ($CMD eq "runter") {
if ($window_contact == 1)
{
fhem
"set $window_opener PIO.B 1;
sleep $duration_pause;
set $window_opener PIO.B 0";

if ($duration_opener > 0)
{
fhem
"sleep $duration_opener;
set $window_opener PIO.A 1;
set $window_opener PIO.B 1;
sleep $duration_pause;
set $window_opener PIO.A 0;
set $window_opener PIO.B 0";
}
fhem
"set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.B 0";

if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter;
set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";
}
}
}else {
fhem
"set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.B 0";
if ($duration_shutter > 0)
{
fhem
"sleep $duration_shutter;
set $window_shutter PIO.A 1;
set $window_shutter PIO.B 1;
sleep $duration_pause;
set $window_shutter PIO.A 0;
set $window_shutter PIO.B 0";
}
}

}


Greetz
Eldrik


justme1968

was genau meinst du mit 'direkte meldungen' ?

es gibt keine einschränkung hinsichtlich der anzhal der kommandos.

die einrückungen deiner klammer ebenen stimmt zumindest hier in der web ansicht nicht mit der tatsächlichen klammer hierarchie überein. vielleicht gibt es hier ein problem ?

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

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

eldrik

folgende Meldung erhalte ich:

Unknown argument hoch, choose one of interval PIO.A PIO.ALL PIO.B PIO.BYTE

Ja die Hierarchie dürfte in der Ansicht nicht stimmen, vom verschachteln her würde ich zumindest meinen das es passt.

Greetz
Eldrik

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?