HomeBrewWired - Diskussion zum Tutorial

Begonnen von Thorsten Pferdekaemper, 01 Dezember 2016, 22:03:19

Vorheriges Thema - Nächstes Thema

aperoap

Hallo Thomas,

Danke läuft perfekt  :)

Gruß
Juri

aperoap

Hallo Zusammen,

ich schonwieder :)

Ich würde gerne die Geräteadresse ändern bevor ich das Gerät an Fhem anbinde.
hat jemand schon eine Lösung?

LG
Juri

loetmeister

Hi,

warum denn vorher ändern? Ist doch einfach neue Geräte einmalig in FHEM mit einer Adresse zu versorgen.. s.u.
Die Standardadresse 0x42FFFFFF sollte natürlich bei keinem Gerät dauerhaft genutzt werden  ;)

ZitatNeue "Homematic Wired Homebrew" Hardware in Betrieb nehmen:
  1. Neues Gerät flashen (ISP) oder per USB auf Arduino übertragen.

  2. Adresse per FHEM setzen: raw-Befehl an das Device schicken 406142000017
    ...setzt die Adresse auf 0x42000017

  3. Altes Gerät in FHEM löschen, "config" Taster kurz drücken - Gerät sollte mit neuer
    Adresse angelegt werden. ("config" Taster Betätigung nicht nötig mit Lib ab Nov. 2020)

Gruß,
Thomas

aperoap

Hi Thomas,

die Änderung in FHEM ist mir schön von der Anleitung bekannt. wollte das schön ändern bevor das gerät mir FHEM verbunden ist.
gibt es eine alternative möglichkeit?

LG
Juri

Thorsten Pferdekaemper

Hi,
in libraries/src/HBWired.cpp gibt's eine Methode HBWDevice::readAddressFromEEPROM. Dort wird als Default 0x42FFFFFF reingeschrieben. Das kannst Du ändern bevor Du das ganze kompilierst und auf das Gerät schiebst.
Das geht natürlich davon aus, dass das EEPROM vorher "leer" ist.
Du kannst wahrscheinlich auch in HBWDevice::getOwnAddress hart codiert die gewünschte Adresse zurückgeben. Dann kannst Du sie halt später nicht mehr ändern.
Gruß,
   Thorsten
FUIP

loetmeister

Oder ein separaten Arduino sketch, den man vorher einmalig überträgt um die Adresse zu setzen... ich hatte mal einen Sketch zum löschen des EEPROM, so wie es ein HBW Device machen würde erstellt, das könnte man um das schreiben der neuen Geräte Adresse anpassen. (Funktion von Thorsten erwähnt).
Feste Geräte Adresse im Code fänd ich nicht so praktisch... aber jeder wie ers braucht. ;-)

/*
 * EEPROM Clear
 *
 * This example code is in the public domain.
 */

#include <EEPROM.h>

void setup() {
  // initialize the LED pin as an output.
  pinMode(13, OUTPUT);
 
  /***
    Iterate through each byte of the EEPROM storage.

    Larger AVR processors have larger EEPROM sizes, E.g:
    - Arduno Duemilanove: 512b EEPROM storage.
    - Arduino Uno:        1kb EEPROM storage.
    - Arduino Mega:       4kb EEPROM storage.

    Rather than hard-coding the length, you should use the pre-provided length function.
    This will make your code portable to all AVR processors.
  ***/

  for (int i = 0 ; i < E2END - 4 ; i++) {
    EEPROM.update(i, 0xFF);
  }

  // turn the LED on when we're done
  digitalWrite(13, HIGH);
}

void loop() {
  /** Empty loop. **/
}

aperoap

Hallo Jungs,

vielen Lieben Dank, wie immer seit ihr sehr Hilfsreich.

LG
Juri