FHEM Forum

FHEM - Hausautomations-Systeme => 1Wire => Thema gestartet von: UweH am 25 März 2016, 18:47:46

Titel: DS2408 gpio schalten
Beitrag von: UweH am 25 März 2016, 18:47:46
Moin Moin,

ich bin gerade an eine Grenze gestoßen...  :o Ich will bei einem DS2408 die Ausgänge per "set ... gpio ..." schalten, bekomme aber die Werte nicht auf die Reihe. 0 schaltet alle Ausgänge ein, 255 alle aus, das weiß ich zumindest. Woraus oder woher kann ich die anderen Werte ableiten?
Stehe da gerade auf dem Schlauch und wäre für eine kleine Hilfe dankbar  :-[

Gruß
Uwe
Titel: Antw:DS2408 gpio schalten
Beitrag von: Haus-Andi am 25 März 2016, 21:05:24
Hallo Uwe

ein ganz ähnliches Problem hatte ich heute auch. Gestern ist mein 8-Kanal Modul von denkovi.com https://denkovi.com/1-wire-eight-channel-relay-board-for-home-automation (https://denkovi.com/1-wire-eight-channel-relay-board-for-home-automation) angekommen und heute wollte ich das mal testen. Also alles angeschlossen und nach einem Restart des fhem war es auch da drin.

Bei mir ist es so, das ich die einzelnen Port direkt im fhem beim DS2408 folgendermassen schalten kann:
set DS2408_xxxxxx PIO.0 10 (zum ausschalten) und 11 (zum einschalten)
set DS2408_xxxx PIO.1 10 resp 11
etc

Um alle 8 Relais aufs mal anzusteuern gibt es die Variable PIO.BYTE:
set DS2408_xxxxx PIO.BYTE 10 (um alle auszuschalten), die 11 schaltet bei mir das 1 Relais, die 12 das 2 Relais usw.
Achtung die 13 schaltet aber nicht das Relais 3 sondern das 1 und 2 zusammen, erst die 14 ist dann das Relais Nr. 3.
Bei mir setzt folgendes alle Relais auf "on set DS2408_xxxx PIO.BYTE 1255

Wieso und warum das so ist weiss ich nicht, was ich herausgefunden habe ist folgendes: es ist eigentlich binär aufgebaut, aber wieso es bei "10" und nicht bei "0" beginnt ist mir absolut schleierhaft.

Andi
Titel: Antw:DS2408 gpio schalten
Beitrag von: AndiL am 25 März 2016, 21:42:54
Hallo Uwe,

gib mal
set ... gpio 170
und dann
set ... gpio 85
ein.
Dann dürfte es klar sein  ::)

Gruß
Andi
Titel: Antw:DS2408 gpio schalten
Beitrag von: UweH am 25 März 2016, 21:58:19
@AndiL: Hübscher Effekt (vor allem, wenn man an den Ausgängen LEDs hängen hat  :) ), und der Zusammenhang von 85 und 170 ist mir auch klar, nur leider verschließt sich mir das System dahinter.
Ich bin nicht so wirklich binär-affin...
Titel: Antw:DS2408 gpio schalten
Beitrag von: Prof. Dr. Peter Henning am 26 März 2016, 04:36:28
A = Bit Null = Wert 2^0 = 1
B = Bit 1 = Wert 2^1 = 2
...
H = Bit 7 = Wert 2^7 = 128

An bedeutet 0*Wert, aus bedeutet 1*Wert, also z.B. H an=0*128, A aus=1*1

Also A aus, D aus, E aus, F aus, B an, C an, G an, H an:

1*1+0*2+0*4+1*8+1*16+1*32+0*64+0*128 = 00111001 binär (Reihenfolge umgekehrt !) = 0x39 hexadezimal = 57 dezimal

LG

pah


Titel: Antw:DS2408 gpio schalten
Beitrag von: UweH am 26 März 2016, 07:08:33
"Man wird alt wie..."  ;)
Danke, wieder was gelernt.

Gruß
Uwe
Titel: Antw:DS2408 gpio schalten
Beitrag von: klausmrkor am 11 August 2016, 21:04:02
Endschuldigung wenn ich frage aber ich möchte wissen, ob ich die Schaltung direckt mit der GPIO des RPI verbinden kann?

Gruß
Klaus Mrkor
Titel: Antw:DS2408 gpio schalten
Beitrag von: UweH am 12 August 2016, 16:50:08
Welche Schaltung? Meinst Du das Modul von Denkovi?
Titel: Antw:DS2408 gpio schalten
Beitrag von: klausmrkor am 12 August 2016, 22:09:43
Ja das meinte ich,
Gruß
Klaus Mrkor
Titel: Antw:DS2408 gpio schalten
Beitrag von: Haus-Andi am 13 August 2016, 09:12:53
Hallo Klaus

Aus eigener Erfahrung mussich dir sagen, es geht zwar, aber die integration im fhem ist viel einfacher wenn es über die USB-Schnittstelle gemacht wird. Es gibt günstige USB-to-1W Interfaces auch von Denkovi gibt es eines.

Ich habe tagelang versucht via GPIO4 den 1W zum laufen zu bringen, für Temperaturfühler ist das genügend, aber für mehr wird es sehr schwierig.

Gruss Andi
Titel: Antw:DS2408 gpio schalten
Beitrag von: UweH am 13 August 2016, 12:12:44
Kann mich nur anschließen...wir haben in FHEM eine so hervorragende Anbindung an 1-Wire, dass jeder Versuch über GPIO verschwendete Zeit ist.
Besorg Dir einen USB/1-Wire-Busmaster (es gibt hier genügend Threads, die das Thema behandeln) und schließ das Denkovi-Modul darüber an. Es gibt übrigens auch einen Thread zum Denkovi-Modul.

Gruß
Uwe
Titel: Antw:DS2408 gpio schalten
Beitrag von: klausmrkor am 13 August 2016, 19:40:53
Vielen Dank,
ich habe sehr viel zeit damit verbracht und es erst am PC versucht. Ich dachte nur, dass es über GPio leichter wäre.
ich habe auch ein Usb-Master und das 2408 Denkovi-Modul.
Ich hatte nur mit dem letzten Versuch pech, das Programm wollte nicht laufen, aber wenn es so ist, werde ich es nochmals versuchen.

Weißt du vieiieicht wo der Thread zum Denkovi-Modul steht?

Mit freundlichen Grüßen
Klaus Mrkor
Titel: Antw:DS2408 gpio schalten
Beitrag von: klausmrkor am 27 August 2016, 21:29:32
Hallo, ich habe das 2408 Denkovi-Modul jetzt hinbekommen, nur ein Problem bei der Schaltung.
2 und 3 sollen geschaltet werden.
wenn 2 aus muss 3 an und umgekehrt.

([ht.Rolltaster] eq "on" )
(set DS2408_F89B18000000 PIO.3 10) (set DS2408_F89B18000000 PIO.2 11)
  DOELSE
(set DS2408_F89B18000000 PIO.2 10) (set DS2408_F89B18000000 PIO.3 11)

Was mache ich falsch dass der Schalter nicht funktioniert?

Im voraus besten Dank
Gruß
Klaus

Titel: Antw:DS2408 gpio schalten
Beitrag von: UweH am 28 August 2016, 18:18:33
Benutzt Du nun einen USB-Busmaster? Welches Modul...OWX oder OWServer?
Titel: Antw:DS2408 gpio schalten
Beitrag von: klausmrkor am 28 August 2016, 21:23:57
Hallo UweH

Ich habe einen USB-Busmaster  und benutze OWServer.

Das mit der Schaltung habe ich heute hinbekommen.
Ich habe den Interval auf 5 sek verkürzt, dann hat es funktioniert.

Jetzt muß ich nur noch einen Taster anschliesen. Da muss ich mir noch überlegen wie.
Der ht.Rolltaster ist nur ein virtueller Schalter)

Besten Dank
Gruß Klaus
Titel: Antw:DS2408 gpio schalten
Beitrag von: Prof. Dr. Peter Henning am 28 August 2016, 21:27:42
Zitat*bewertungshäkchenblödsinnverweigerer*

Gut, noch einer...

LG

pah
Titel: Antw:DS2408 gpio schalten
Beitrag von: klausmrkor am 01 September 2016, 11:18:22
Hallo,
ich habe mir einen Schalter gebaut und diesen über Taster angesprochen.
da er aber dadurch gleich wieder aus ist, habe ich ein  Doif zwischengeschaltet.

define ht_rollo doif ([DS2406_C468C3000000:sensed.A] eq "on")(set s1 on)
wenn DS2406 an dann schalter s1 an

define di_rs1 doif ([s1] eq "on")(set s1 off)
attr di_rs1 waitfortimer 1
attr di_rs1 wait         3      (später 300)
wenn s1 an soll er 3(00s)s  warten dann wieder aus

1 mal funktioniert es dann wieder nicht.
was ist falsch?

kann mir jemand helfen.

gruß
Klaus
Titel: Antw:DS2408 gpio schalten
Beitrag von: klausmrkor am 01 September 2016, 15:40:42
Ich habe es jetzt versucht so zu machen
   
define di_rs1 DOIF ([ht.Rolltaster] eq "on" and [s1] eq "on")(set ht.Rolltaster off)(set s1 off)
do allways
timerWithWait
wait 3

define di_rs2 DOIF ([ht.Rolltaster] eq "off" and [s1] eq "on")(set ht.Rolltaster on)(set s1 off)
do allways
timerWithWait
wait 3

define s1 Dummy
attr s1 listset on off

Wenn ich jetzt s1 drückr, dann springt er zu di_rs1 läuft die Befehle durch und sollte stoppen, damit ht.Rolltaster auf on steht.
jedoch durch die Änderung von ht.Rolltaster springt er zu di_rs2 und stellt ht.Rolladen wieder auf off.

Wie kann ich den zweiten Befehl verhindern?

Mit freundlichen Grüssen
Klaus

Titel: Antw:DS2408 gpio schalten
Beitrag von: Prof. Dr. Peter Henning am 03 September 2016, 02:59:10
1. Beide Schaltvorgänge in EIN DOIF stecken, dann werden sie alternativ ausgeführt. Beispiele im Commandref.
2. Bitte "always" mit EINEM l schreiben.

LG

pah
Titel: Antw:DS2408 gpio schalten
Beitrag von: presskopf am 07 Oktober 2016, 10:39:51
Ich habe das jetzt so gelöst:

Einen Dummy für jedes Relais A - H:
define 1w8s_A dummy
attr 1w8s_A devStateIcon 0:ios-off 1:ios-on-green
attr 1w8s_A eventMap off:0 on:1
attr 1w8s_A setList on off


Einen Dummy für die Anzeige des übertragenen Wertes:
define 1w8s__gpio dummy

Und ein Notify, das den Rest erledigt:
define test3 n_1w8s (1w8s_A|1w8s_B|1w8s_C|1w8s_D|1w8s_E|1w8s_F|1w8s_G|1w8s_H) \
{\
fhem("set 1w8s__gpio " . (255 - (Value("1w8s_A") \
+ 2*Value("1w8s_B") \
+ 4*Value("1w8s_C") \
+ 8*Value("1w8s_D") \
+ 16*Value("1w8s_E") \
+ 32*Value("1w8s_F") \
+ 64*Value("1w8s_G") \
+ 128*Value("1w8s_H"))));;;; \
fhem("set 1wire_8switch gpio " . (Value("1w8s__gpio")))\
}


Was halt nicht geht:
Weder die Schalter noch der GPIO-Dummy werden aktualisiert, wenn man den die Relaiskarte direkt in der Befehlszeile anspricht / schaltet.