DS2413 Klon in 1Wire Netz einbinden?

Begonnen von Henk2015, 12 Oktober 2016, 12:53:34

Vorheriges Thema - Nächstes Thema

Henk2015

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

Prof. Dr. Peter Henning

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

Henk2015

#2
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. ;-)

Prof. Dr. Peter Henning

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

Henk2015

#4
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. ;-)

Prof. Dr. Peter Henning


Henk2015


Prof. Dr. Peter Henning

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

UweH

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

UweH

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

Prof. Dr. Peter Henning


UweH

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

Prof. Dr. Peter Henning

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

UweH

Autsch.
Aber gut, dass ich erst 8 von den Aktoren gebaut habe. Dann muss ich auf "normale" DS2413 umrüsten.

Gruß
Uwe