HBWired an CCU 3 nutzen

Begonnen von PG201245, 19 Dezember 2021, 18:17:43

Vorheriges Thema - Nächstes Thema

maxx3105

Nein ich habe die Adresse in der HBWired.cpp geändert.

loetmeister

Ok... ist nicht ganz im Sinne des Erfinders https://forum.fhem.de/index.php?topic=61780.msg536038#msg536038  8)
Man könnte auch die Geräteadresse in der Gerätekonfiguration sichtbar machen... aktuell ist sie versteckt.

Thorsten Pferdekaemper

Hi,
man kann die Adresse dann wohl kaum über die CCU ändern, oder?
Gruß,
  Thorsten
FUIP

maxx3105

Zitat von: loetmeister am 10 Dezember 2023, 10:26:20Ok... ist nicht ganz im Sinne des Erfinders https://forum.fhem.de/index.php?topic=61780.msg536038#msg536038  8)
Man könnte auch die Geräteadresse in der Gerätekonfiguration sichtbar machen... aktuell ist sie versteckt.

Das wäre sehr ideal. Aktuell muss ich immer zwischen Hardware und Software Serial switchen um die Adresse im Serial Monitor zu sehen.

Zitat von: Thorsten Pferdekaemper am 10 Dezember 2023, 10:33:43Hi,
man kann die Adresse dann wohl kaum über die CCU ändern, oder?
Gruß,
  Thorsten

Mir würde nur die Möglichkeit per SSH einfallen. Falls das funktioniert wäre es per Skript oder CuxD möglich. Ist das irgendwo detailierter Beschrieben?

loetmeister

#19
Zitat von: maxx3105 am 10 Dezember 2023, 14:51:27
Zitat von: loetmeister am 10 Dezember 2023, 10:26:20Ok... ist nicht ganz im Sinne des Erfinders https://forum.fhem.de/index.php?topic=61780.msg536038#msg536038  8)
Man könnte auch die Geräteadresse in der Gerätekonfiguration sichtbar machen... aktuell ist sie versteckt.

Das wäre sehr ideal. Aktuell muss ich immer zwischen Hardware und Software Serial switchen um die Adresse im Serial Monitor zu sehen.

Ergänze die Geräte XML mal um <parameter id="OWN_ADDRESS">
<paramset type="MASTER" ...

    <parameter id="OWN_ADDRESS">
        <logical type="integer" default="1124073471" max="1107558399" min="1107296256"/>
        <physical size="4" type="integer" interface="eeprom">
            <address index="0x3FC"/>
        </physical>
    </parameter>
...
</paramset>
Adressbereich wäre 0x42000000 - 4203FFFF. Default 42FFFFFF (so wie in HBWired.cpp gesetzt wird)
Habs nicht getestet.
EDIT: Danach Gerät neu starten um die neue Adresse zu verwenden...

Gruß,
Thomas

maxx3105

Hab mal versucht die Adresse zu ändern. Eine unreach kam danach nicht. Habe dann das Gerät gelöscht und versuche es nun neu anzulernen.

Du darfst diesen Dateianhang nicht ansehen.

maxx3105

So habe das ganze mal mit serial monitor wiederholt. Die Geräteadresse ändert sich dadurch nicht aber irgendwas wird empfangen und verarbeitet.

21:46:17.271 -> B: 2A 935
21:46:17.271 -> OW sensorSearch
21:46:17.271 -> 1-Wire device found: 286487C311210190 - already known
21:46:17.311 -> conf_OW-addr: 286487C311210190
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:17.311 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:46:18.273 -> T: FD:FF:FF:FF:FF:F8:42:00:00:17:12:41:00:81:01:00:03:48:42:57:37:32:39:36:32:37:39:3E:78
21:46:27.329 -> T: FD:00:00:00:01:98:42:00:00:17:06:69:00:07:2D:36:6A
21:46:27.329 -> R: FD:42:00:00:17:19:00:00:00:01:02:A2:3C
21:46:27.367 -> R: ACK
21:46:27.367 -> channel: 0 sent temp, c°C: 1837 SUCCESS!
21:47:42.933 -> R: FD:42:00:00:17:18:00:00:00:01:16:57:03:F0:10:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:42:03:FF:FC:7E:77:76
21:47:43.077 -> C: Write EEPROM
21:47:43.077 -> T: FD:00:00:00:01:19:42:00:00:17:02:E4:5C
21:47:43.087 -> R: FD:42:00:00:17:1A:00:00:00:01:03:43:25:BE
21:47:43.087 -> T: FD:00:00:00:01:39:42:00:00:17:02:00:9A
21:47:43.087 -> OW sensorSearch
21:47:43.087 -> 1-Wire device found: 286487C311210190 - already known
21:47:43.087 -> conf_OW-addr: 286487C311210190
21:47:43.087 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF
21:47:43.088 -> conf_OW-addr: FFFFFFFFFFFFFFFF


loetmeister

Hi,

Ja, das ging leider doch nicht so einfach. Die 4 Byte für die Adresse sind normalerweise gesperrt... den Schutz einfach aufheben würde aber bedeuten das bei einem device reset über fhem/CCU auch die Adresse gelöscht werden würde.
Da Brauch man doch noch was mehr code um nur beim Schreiben der 4 Adressebyte die Änderung zuzulassen, aber bei einem kompletten Rest nicht...

maxx3105

Ich habe es nun so gelöst. Im Sketch diese Zeilen einfügen.
#define DEVICE_ADDRESS 0x42FFFFFF // Neue Geräteadresse definieren
#include "DeviceAddress.h" // Header-Datei zur definition der Geräteadresse ("setDeviceAddress();" unter void setup einfügen")

und diese Header-Datei DeviceAddress.h
#ifndef DeviceAddress_h
#define DeviceAddress_h

#include <EEPROM.h>

// Definition der Adresse
#ifndef DEVICE_ADDRESS
  #error "Please define the device address using '#define DEVICE_ADDRESS 0x12345678'"
#endif

// Funktion, um die Geräteadresse im EEPROM zu setzen
void setDeviceAddress() {
  // Adresse an den obersten 4 Bytes des EEPROM schreiben
  for (int i = 0; i < 4; i++) {
    EEPROM.write(i, (DEVICE_ADDRESS >> (24 - i * 8)) & 0xFF);
  }
}

#endif