Hallo,
ich habe mir einen Sack voll DS2413 Dual Channel Adressable Switch gesichert, dabei handelt es sich aber leider um kein Originalprodukt sondern um "3A 2100 H". Diese werden von meinem FHEM (OneWire per Firmata an Arduino) auch brav gelistet, aber er kann sie keinem Typ (0x85) zuordnen. Wie kann ich das beheben?
Danke
Gruß - Henk
Es ist ein wenig schwierig, Module für Hardware zu programmieren, die man nicht hat.
- Datenblatt ?
- Abweichungen vom Protokoll ?
- Nur andere 1-Wire Family ID (eben die 0x85) ?
Wenn nur die Family ID anders ist, geht das sehr schnell. Andere Abweichungen machen es deutlich schwieriger,
LG
pah
Hallo,
der Rest sollte laut meinen Recherchen identisch sein, nur abweichende FamilyID. Im Anhang das per autocreate von FHEM angelegte Gerät.
Das Problem dieses "Klons" ist natürlich im Internet schon bekannt, habe leider nicht richtig gelesen. ;-)
OK, folgende Patches bitte ausprobieren:
1. In der Datei 00_OWX.pm die Zeilen
#-- Family 3A = Switch DS2413
}elsif( $owx_f eq "3A" ){
$chip = "DS2413";
$acstring = "OWSWITCH DS2413";
suchen. Ersetzen durch
#-- Family 3A = Switch DS2413
}elsif( $owx_f eq "3A" ){
$chip = "DS2413";
$acstring = "OWSWITCH DS2413";
}elsif( $owx_f eq "85" ){
$chip = "DS2413";
$acstring = "OWSWITCH DS2413";
Das tut einfach so, als ob der Klon wirklich das Original ist
1. In der Datei 21_OWSWITCH.pm den Code suchen
if( $fam eq "3A" ){
$model = "DS2413";
CommandAttr (undef,"$name model DS2413");
und ersetzen durch
if( $fam eq "3A" ){
$model = "DS2413";
CommandAttr (undef,"$name model DS2413");
}elsif( $fam eq "85" ){
$fam ="3A";
$model = "DS2413";
CommandAttr (undef,"$name model DS2413");
Das ist noch etwas brutaler, biegt auch für Chips mit einer Family ID 85 diese auf 3A um.
Wenn das damit funktioniert, baue ich es nachhaltig in das Modul ein.
LG
pah
Okay,
habe das alte autocreate gelöscht und jetzt hat er einen OWSWITCH daraus gemacht. Muss aber noch testen, ob auch die Eingänge funktionieren...
edit: Es scheint zu funktionieren, nur Kanal A und B sind verdreht, aber das kann auch an meiner Platine liegen. ;-)
Quelle für die Dinger ?
LG
pah
Moin,
beispielsweise hier: https://de.aliexpress.com/item/5pcs-lot-DS2413P-DS2413-1-Wire-Dual-Channel-Addressable-Switch-TSOC-6pin-Free-Shipping/2045634379.html?spm=2114.13010608.0.0.y8A6wG
Ich kann Dir zum testen gern ein IC samt entsprechender Platine zusenden wenn Interesse besteht.
Nö, nicht nötig - wenn das gepatchte OWSWITCH-Modul damit läuft, ist alles ok.
Erstens bestätigt das meinen Verdacht, dass die Chinesen irgendwie an die Chipmasken von Maxim gekommen sind (sonst gäbe es nicht so viele spottbillige DS18B20 aus China).
Zweitens: Witzigerweise tragen die 3A 2100H-Chips die family ID 3A der originalen DS2413 als Aufdruck. Ein Schelm, wer Böses dabei denkt.
LG
pah
Hallo pah,
der Patch ist für die 00_OWX.pm 6.0beta4 nicht anwendbar, sehe ich das richtig? Oder übersehe ich was?
Ich wollte gerade mal einen der China-DS2413 testen.
Danken und Gruß
Uwe
Ich antworte mir mal selbst...ich habe in der OWX eine neue Zeile eingefügt
"85" => ["DS2413","OWSWITCH DS2413"],
und damit wird der Chinamann als DS2413 erkannt, angelegt und man kann ihn schalten.
Gruß
Uwe
Prima. Neue Version demnächst.
LG
pah
Hallo pah,
ich muss das Thema nach so langer Zeit mal hochschubsen.
Ich bin erst jetzt dazu gekommen, eine größere Anzahl Aktoren mit den Chinaklonen zu bauen. Schon tut sich ein Problem auf...
Die Dinger werden erkannt, angelegt und sind schaltbar. Nach einem "shutdown restart" aber werden diese Aktoren wieder neu mit einer neuen ROM-ID angelegt. Es ist so, dass die ROM-ID des Devices solange mit 85. beginnt, bis ein restart durchgeführt wird. Danach wird sie auf "3A." geändert und damit kommt es wohl zu der Meldung "duplicate ROM ID" im Log.
Bei einem restart gibt's dazu im Log folgende Einträge:
2018.02.12 13:29:18 1: OWXSWITCH_BinValues ds2413.getstate.final: Steckdose: invalid data in getstate, 0xff 0xff
2018.02.12 13:29:47 1: OWX_Init called for bus OW_USB with interface state opened, now going for detect
2018.02.12 13:29:48 1: OWX_Discover: Warning, Steckdose on bus OW_USB is defined with duplicate ROM ID
2018.02.12 13:29:48 1: OWX_Discover: 1-Wire devices found on bus OW_USB (OWX_20_761F0C000000,Temp.AZ,Aktor2,Aktor_AZ,Aktor3,Heizungsschalter,OWX_85_3D7A78C00310)
Vor dem restart nach einem "get ... devices" wird das Device Steckdose noch korrekt gefunden:
2018.02.12 13:28:10 1: OWX_Discover: 1-Wire devices found on bus OW_USB (OWX_20_761F0C000000,Temp.AZ,Aktor2,Aktor_AZ,Aktor3,Heizungsschalter,Steckdose)
List vor restart:
Internals:
ASYNC 0
CFGFN
DEF DS2413 3D7A78C00310
ERRCOUNT 0
INTERVAL 300
IODev OW_USB
NAME OWX_85_3D7A78C00310
NEXTSEND 1518438598.59863
NOTIFYDEV global
NR 57
NTFY_ORDER 50-OWX_85_3D7A78C00310
OW_FAMILY 3A
OW_ID 3D7A78C00310
PRESENT 1
ROM_ID 85.3D7A78C00310.06
STATE A: OFF B: OFF
TYPE OWSWITCH
READINGS:
2018-02-12 13:29:58 A OFF
2018-02-12 13:29:58 B OFF
2018-02-12 13:29:58 gpio 3
2018-02-12 13:29:58 state A: OFF B: OFF
owg_val:
1
1
owg_vax:
1
1
Attributes:
IODev OW_USB
model DS2413
room OWX
List nach restart:
Internals:
ASYNC 0
CFGFN
DEF DS2413 3D7A78C00310
ERRCOUNT 2
INTERVAL 300
IODev OW_USB
NAME Steckdose
NEXTSEND 1518438857.05513
NOTIFYDEV global
NR 43
NTFY_ORDER 50-Steckdose
OW_FAMILY 3A
OW_ID 3D7A78C00310
PRESENT 0
ROM_ID 3A.3D7A78C00310.c7
STATE initialized
TYPE OWSWITCH
READINGS:
2018-02-12 13:27:15 A OFF
2018-02-12 13:27:15 B OFF
2018-02-12 13:27:15 gpio 3
2018-02-12 13:29:17 state initialized
owg_val:
1
1
owg_vax:
0
0
Attributes:
IODev OW_USB
model DS2413
room OWX
Tja, und nun...Kannst Du das Ändern der ROM-ID irgendwie verhindern? Irgendeinen genialen Trick einbauen? ;)
Gruß
Uwe
Ist ja übel.
Vor allem auch deshalb, weil der CRC-Code sich ebenso ändert.
Derzeit habe ich keinen Plan, wie man das abfangen könnte.
LG
pah
Autsch.
Aber gut, dass ich erst 8 von den Aktoren gebaut habe. Dann muss ich auf "normale" DS2413 umrüsten.
Gruß
Uwe