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
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
Hallo Uwe,
gib mal
set ... gpio 170
und dann
set ... gpio 85
ein.
Dann dürfte es klar sein ::)
Gruß
Andi
@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...
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
"Man wird alt wie..." ;)
Danke, wieder was gelernt.
Gruß
Uwe
Endschuldigung wenn ich frage aber ich möchte wissen, ob ich die Schaltung direckt mit der GPIO des RPI verbinden kann?
Gruß
Klaus Mrkor
Welche Schaltung? Meinst Du das Modul von Denkovi?
Ja das meinte ich,
Gruß
Klaus Mrkor
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
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
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
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
Benutzt Du nun einen USB-Busmaster? Welches Modul...OWX oder OWServer?
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
Zitat*bewertungshäkchenblödsinnverweigerer*
Gut, noch einer...
LG
pah
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
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
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
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.