Javascript um einfach Register zu bearbeiten

Begonnen von papa, 12 Dezember 2018, 22:16:48

Vorheriges Thema - Nächstes Thema

Christoph Morrison

Unter welcher Lizenz veröffentlichst du dein Skript? Benutzt du GitHub o.ä.?

Christoph Morrison

Ich hab mir das auch mal installiert und folgendes passierte, als ich die dayTemp eines HM-Wandthermostats auf 20°C anpassen wollte (JavaScript console):

set gf.o.heating.control.climate regSet  ; set gf.o.heating.control.climate regSet  ;
hm.js:282  failed: supported register are boostPeriod btnLock burstRx cyclicInfoMsg cyclicInfoMsgDis dayTemp daylightSaveTime globalBtnLock heatCool localResDis lowBatLimitRT modePrioManu modePrioParty modusBtnLock nightTemp noMinMax4Manu pairCentral sendWeatherData showHumidity showInfo showSetTemp showWeekday sign tempMax tempMin tempOffset weekPrgSel winOpnBoost
failed: supported register are boostPeriod btnLock burstRx cyclicInfoMsg cyclicInfoMsgDis dayTemp daylightSaveTime globalBtnLock heatCool localResDis lowBatLimitRT modePrioManu modePrioParty modusBtnLock nightTemp noMinMax4Manu pairCentral sendWeatherData showHumidity showInfo showSetTemp showWeekday sign tempMax tempMin tempOffset weekPrgSel winOpnBoost


Die dayTemp wurde nicht gesetzt.

Device:
Internals:
   .triggerUsed 1
   CFGFN      ./cfg.d/gf/office.cfg
   DEF        35AC1C02
   NAME       gf.o.heating.control.climate
   NOTIFYDEV  global
   NR         3301
   NTFY_ORDER 50-gf.o.heating.control.climate
   STATE      23.7 °C (20.0 °C gewünscht), 40 % Luftfeuchte
   TYPE       CUL_HM
   chanNo     02
   device     gf.o.heating.control
   .attraggr:
   .attrminint:
   READINGS:
     2018-12-19 20:30:33   .peerListRDate  2018-12-19 20:30:33
     2018-11-04 18:14:48   CommandAccepted yes
     2018-06-27 09:37:20   R-boostPeriod   5 min
     2018-06-27 09:37:20   R-dayTemp       21 C
     2018-06-27 09:37:20   R-daylightSaveTime on
     2018-06-27 09:37:20   R-heatCool      heating
     2018-06-27 09:37:20   R-modePrioManu  all
     2018-06-27 09:37:20   R-modePrioParty all
     2018-06-27 09:37:20   R-nightTemp     17 C
     2018-06-27 09:37:20   R-noMinMax4Manu off
     2018-12-19 20:30:38   R-sendWeatherData on
     2018-12-19 20:30:38   R-showHumidity  temp
     2018-06-27 09:37:20   R-showInfo      time
     2018-12-19 20:30:38   R-showSetTemp   actTemp
     2018-06-27 09:37:20   R-showWeekday   off
     2018-06-27 09:37:16   R-sign          off
     2018-06-27 09:37:20   R-tempMax       30.5 C
     2018-06-27 09:37:20   R-tempMin       4.5 C
     2018-12-19 20:30:38   R-tempOffset    0.5K
     2018-06-27 09:37:20   R-weekPrgSel    prog1
     2018-06-27 09:37:20   R-winOpnBoost   off
     2018-12-19 20:30:48   R_P1_0_tempListSat  06:00 18.0 23:00 20.0 24:00 18.0
     2018-12-19 20:30:48   R_P1_1_tempListSun  06:00 18.0 22:00 20.0 24:00 18.0
     2018-12-19 20:30:48   R_P1_2_tempListMon  06:00 18.0 22:00 20.0 24:00 18.0
     2018-12-19 20:30:48   R_P1_3_tempListTue  06:00 18.0 22:00 20.0 24:00 18.0
     2018-12-19 20:30:48   R_P1_4_tempListWed  06:00 18.0 22:00 20.0 24:00 18.0
     2018-12-19 20:30:48   R_P1_5_tempListThu  06:00 18.0 22:00 20.0 24:00 18.0
     2018-12-19 20:30:48   R_P1_6_tempListFri  06:00 18.0 22:00 20.0 24:00 18.0
     2018-12-19 20:30:48   R_P1_tempList_State verified
     2018-12-19 20:30:48   R_P2_0_tempListSat  24:00 17.0
     2018-12-19 20:30:48   R_P2_1_tempListSun  24:00 17.0
     2018-12-19 20:30:48   R_P2_2_tempListMon  24:00 17.0
     2018-12-19 20:30:48   R_P2_3_tempListTue  24:00 17.0
     2018-12-19 20:30:48   R_P2_4_tempListWed  24:00 17.0
     2018-12-19 20:30:48   R_P2_5_tempListThu  24:00 17.0
     2018-12-19 20:30:48   R_P2_6_tempListFri  24:00 17.0
     2018-12-19 20:30:48   R_P2_tempList_State verified
     2018-12-19 20:30:48   R_P3_0_tempListSat  24:00 17.0
     2018-12-19 20:30:48   R_P3_1_tempListSun  24:00 17.0
     2018-12-19 20:30:48   R_P3_2_tempListMon  24:00 17.0
     2018-12-19 20:30:48   R_P3_3_tempListTue  24:00 17.0
     2018-12-19 20:30:48   R_P3_4_tempListWed  24:00 17.0
     2018-12-19 20:30:48   R_P3_5_tempListThu  24:00 17.0
     2018-12-19 20:30:48   R_P3_6_tempListFri  24:00 17.0
     2018-12-19 20:30:48   R_P3_tempList_State verified
     2018-12-19 20:30:33   RegL_01.         00:00 08:00
     2018-12-19 20:30:38   RegL_07.         00:00 01:2A 02:22 03:09 04:3D 05:00 06:00 07:00 08:00 09:88 0A:30 0B:00 0C:00 0D:00 0E:01 0F:04 10:00 11:00 12:09 13:00 14:48 15:48 16:51 17:14 18:49 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:48 2F:48 30:51 31:08 32:49 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:48 49:48 4A:51 4B:08 4C:49 4D:20 4E:55 4F:08 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:48 63:48 64:51 65:08 66:49 67:20 68:55 69:08 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:48 7D:48 7E:51 7F:08 80:49 81:20 82:55 83:08 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:48 97:48 98:51 99:08 9A:49 9B:20 9C:55 9D:08 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:48 B1:48 B2:51 B3:08 B4:49 B5:20 B6:55 B7:08 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00
     2018-12-19 20:30:42   RegL_08.         00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:00 0D:00 0E:00 0F:00 10:00 11:00 12:00 13:00 14:45 15:20 16:45 17:20 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:45 2F:20 30:45 31:20 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:45 49:20 4A:45 4B:20 4C:45 4D:20 4E:45 4F:20 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:45 63:20 64:45 65:20 66:45 67:20 68:45 69:20 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:45 7D:20 7E:45 7F:20 80:45 81:20 82:45 83:20 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:45 97:20 98:45 99:20 9A:45 9B:20 9C:45 9D:20 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:45 B1:20 B2:45 B3:20 B4:45 B5:20 B6:45 B7:20 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00
     2018-12-19 20:30:46   RegL_09.         00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:00 0D:00 0E:00 0F:00 10:00 11:00 12:00 13:00 14:45 15:20 16:45 17:20 18:45 19:20 1A:45 1B:20 1C:45 1D:20 1E:45 1F:20 20:45 21:20 22:45 23:20 24:45 25:20 26:45 27:20 28:45 29:20 2A:45 2B:20 2C:45 2D:20 2E:45 2F:20 30:45 31:20 32:45 33:20 34:45 35:20 36:45 37:20 38:45 39:20 3A:45 3B:20 3C:45 3D:20 3E:45 3F:20 40:45 41:20 42:45 43:20 44:45 45:20 46:45 47:20 48:45 49:20 4A:45 4B:20 4C:45 4D:20 4E:45 4F:20 50:45 51:20 52:45 53:20 54:45 55:20 56:45 57:20 58:45 59:20 5A:45 5B:20 5C:45 5D:20 5E:45 5F:20 60:45 61:20 62:45 63:20 64:45 65:20 66:45 67:20 68:45 69:20 6A:45 6B:20 6C:45 6D:20 6E:45 6F:20 70:45 71:20 72:45 73:20 74:45 75:20 76:45 77:20 78:45 79:20 7A:45 7B:20 7C:45 7D:20 7E:45 7F:20 80:45 81:20 82:45 83:20 84:45 85:20 86:45 87:20 88:45 89:20 8A:45 8B:20 8C:45 8D:20 8E:45 8F:20 90:45 91:20 92:45 93:20 94:45 95:20 96:45 97:20 98:45 99:20 9A:45 9B:20 9C:45 9D:20 9E:45 9F:20 A0:45 A1:20 A2:45 A3:20 A4:45 A5:20 A6:45 A7:20 A8:45 A9:20 AA:45 AB:20 AC:45 AD:20 AE:45 AF:20 B0:45 B1:20 B2:45 B3:20 B4:45 B5:20 B6:45 B7:20 B8:45 B9:20 BA:45 BB:20 BC:45 BD:20 BE:45 BF:20 C0:45 C1:20 C2:45 C3:20 C4:45 C5:20 C6:45 C7:20 C8:45 C9:20 CA:00 CB:00 CC:00 CD:00 CE:00 CF:00
     2018-12-19 20:32:36   boostTime       -
     2018-12-19 20:32:36   commReporting   off
     2018-12-19 20:32:36   controlMode     auto
     2018-12-19 20:32:36   desired-temp    20.0
     2018-12-19 20:32:26   humidity        40
     2018-12-19 20:32:36   measured-temp   23.7
     2018-11-04 18:14:48   partyEnd        18-11-14 12:00
     2018-11-04 18:14:48   partyStart      18-11-4 18:30
     2018-11-04 18:14:48   partyTemp       10
     2018-11-04 18:14:48   recentStateType ack
     2018-12-19 20:32:36   state           T: 23.7 desired: 20.0
     2018-12-19 20:20:10   tempTmplSet     FHEM/temperature_List.cfg:gf.o.templist
     2018-12-19 20:32:36   winOpenReporting off
   helper:
     peerIDsRaw ,00000000
     regLst     ,1,7,8,9
     expert:
       def        1
       det        1
       raw        1
       tpl        1
     regCollect:
     role:
       chn        1
     shRegR:
       07         00
     shadowReg:
     tmpl:
Attributes:
   alias      Wandthermostat
   group      Heizung
   icon       max_wandthermostat@black
   model      HM-TC-IT-WM-W-EU
   peerIDs    00000000,
   room       EG - Büro
   sortby     1
   stateFormat {
            return sprintf(
                "%.1f °C (%.1f °C gewünscht), %d %% Luftfeuchte",
                ReadingsVal("$name", "measured-temp", 0),
                ReadingsVal("$name", "desired-temp", 0),
                ReadingsVal("$name", "humidity", 0),
            )
        }
   tempListTmpl FHEM/temperature_List.cfg:gf.o.templist
   userattr   room_map structexclude

papa

Zitat von: Christoph Morrison am 19 Dezember 2018, 20:34:21
Ich hab mir das auch mal installiert und folgendes passierte, als ich die dayTemp eines HM-Wandthermostats auf 20°C anpassen wollte (JavaScript console):

set gf.o.heating.control.climate regSet  ; set gf.o.heating.control.climate regSet  ;
hm.js:282  failed: supported register are boostPeriod btnLock burstRx cyclicInfoMsg cyclicInfoMsgDis dayTemp daylightSaveTime globalBtnLock heatCool localResDis lowBatLimitRT modePrioManu modePrioParty modusBtnLock nightTemp noMinMax4Manu pairCentral sendWeatherData showHumidity showInfo showSetTemp showWeekday sign tempMax tempMin tempOffset weekPrgSel winOpnBoost
failed: supported register are boostPeriod btnLock burstRx cyclicInfoMsg cyclicInfoMsgDis dayTemp daylightSaveTime globalBtnLock heatCool localResDis lowBatLimitRT modePrioManu modePrioParty modusBtnLock nightTemp noMinMax4Manu pairCentral sendWeatherData showHumidity showInfo showSetTemp showWeekday sign tempMax tempMin tempOffset weekPrgSel winOpnBoost

Hm - komisch. Es wurde der Name und der Wert des Registern nicht mit in das Commando genommen. Welchen Browser verwendest Du ?
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Zitat von: Christoph Morrison am 19 Dezember 2018, 19:53:34
Unter welcher Lizenz veröffentlichst du dein Skript? Benutzt du GitHub o.ä.?
Ich würde das gern letztendlich direkt in FHEM integrieren als Teil des Homematic-Modules. Somit gilt die gleiche Lizenz wie für FHEM - GPL.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Christoph Morrison

Zitat von: papa am 19 Dezember 2018, 23:06:33
Hm - komisch. Es wurde der Name und der Wert des Registern nicht mit in das Commando genommen. Welchen Browser verwendest Du ?

Einen aktuellen Chrome auf macOS (Sierra, shame on me):


Google Chrome 71.0.3578.98 (Offizieller Build) (64-Bit)
Überarbeitung 15234034d19b85dcd9a03b164ae89d04145d8368-refs/branch-heads/3578@{#897}
Betriebssystem Mac OS X
JavaScript V8 7.1.302.31
Flash 32.0.0.101 /Users/morrisonc/Library/Application Support/Google/Chrome/PepperFlash/32.0.0.101/PepperFlashPlayer.plugin
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Befehlszeile /Applications/Google Chrome.app/Contents/MacOS/Google Chrome -psn_0_45067 --flag-switches-begin --disable-features=UseGoogleLocalNtp --flag-switches-end --restore-last-session
Ausführbarer Pfad /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Profilpfad /Users/morrisonc/Library/Application Support/Google/Chrome/Default

papa

Ach immer die Unterschieden zwischen den Browsern :-(
Kannst Du die aktualisierte Version aus dem ersten Beitrag nochmal versuchen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Pfriemler

es funktioniert ... und funktioniert ... und funktioniert ...  :)
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

kaihs

Hallo,

ich finde auch, dass das einen großen Fortschritt darstellt.

Die Anzeige der Register funktioniert bei mit einwandfrei.
Das Ändern dagegen nicht.
Ich habe es soweit verfolgen können, dass in

// check for changed values and send to device
function applyPopup (device,peer) {
  // find all inputs
  var inputs = $('#hm_reg_table').find(":input");
  var command = "";
  for( var i=0; i<inputs.length; ++i ) {


inputs.length = 0 ist und damit keine Änderung erkannt und durchgeführt wird.
Das tritt sowohl mit Firefox als auch mit Chromium auf.
Ich kann auch nicht erkennen wo der Anker(?) #hm_reg_table überhaupt erzeugt wird, ich kenne mich mit Javascript aber auch nicht aus.

Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

kaihs

Ich denke, ich habe die Ursache und Lösung selbst finden können.
Die Zeile

table.setAttribute("id","hm_reg_table");

in changeRegister fehlte:


// open a popup window to change the register values
function changeRegister (device,peer) {
  // first get the register list
  // http://fhem:8083/fhem?cmd=get%20HM_123456_Sw_01%20regList&XHR=1
  var url = makeCommand("get "+device+" regList");
  $.get(url, function(data){
    // parse register definitions into a map
    var regmap = parseRegisterList(data);
    // get the current register values
    // http://fhem:8083/fhem?cmd=get%20HM_123456_Sw_01%20reg%20all&XHR=1
    var url = makeCommand("get "+device+" reg all");
    $.get(url, function(data){
      // console.log(data);
      // create popup window
      var frame = openPopup(device,peer);
      // create a table with all registers
      var table = document.createElement("table");
      table.style["margin"] = "10px";
      table.setAttribute("id","hm_reg_table");
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

papa

Miat - das war eine Änderung am "alten" Code. Habe das jatzt auch in der Version im ersten Beitrag nachgepflegt.
Danke für die Fehleranalyse. Bitte nochmal testen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Pfriemler

#40
So, mein erster Fehler:
Setze ich bei einem Gerät (was in diesem Fall gar nichts mit CUL_HM zu tun hat) über die Weboberfläche das Attribut "ignore" auf 1, erscheint dieses Popup wann immer man das Gerät aufruft:
Zitathm.js line 22:
TypeError: object is undefined
Vermutlich muss man da noch eine Abfrage einbauen ...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

kaihs

Zitat von: papa am 01 Januar 2019, 22:02:41
Bitte nochmal testen.

Funktioniert jetzt.

Noch eine Frage: Aktuell werden die Register ja einzeln per regSet geschrieben und damit auch einzeln per Funk verschickt.
Wäre es nicht besser alle Änderungen bis auf die letzte per regSet prep und das letzte per regSet exec zu ändern?
Dadurch würde die Funklast reduziert.

Hier nochmal der Auszug aus der Commandref:
Zitat
regSet [prep|exec] <regName> <value> <peerChannel>
Für einige Hauptregister gibt es eine lesbarere Version die Registernamen <regName> und Wandlung der Werte enthält. Nur ein Teil der Register wird davon unterstützt.
Der optionale Parameter [prep|exec] erlaubt das Packen von Nachrichten und verbessert damit deutlich die Datenübertragung. Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt. Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
<value> enthält die Daten in menschenlesbarer Form die in das Register geschrieben werden.
<peerChannel> wird benötigt falls das Register 'peerChan' basiert definiert wird. Kann ansonsten auf '0' gesetzt werden. Siehe getRegRaw für komplette Definition.
Unterstützte Register eines Geräts können wie folgt bestimmt werden:

    set regSet ? 0 0

Eine verkürzte Beschreibung der Register wird zurückgegeben mit:

    set regSet <regname> ? 0

Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

papa

Habe eine zusätzliche Prüfung eingebaut. Außerdem wird jetzt exec & prep benutzt. Bitte mal testen. Wenn es funktioniert, aktualisiere ich den ersten Beitrag.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Pfriemler

Zitathm.js line 22:
TypeError: object is undefined
ist Geschichte. Hat ne Weile gedauert bis es im Browser aus den Caches war  ;), aber jetzt klappt es.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

kaihs

Zitat von: papa am 02 Januar 2019, 16:29:30
Habe eine zusätzliche Prüfung eingebaut. Außerdem wird jetzt exec & prep benutzt. Bitte mal testen. Wenn es funktioniert, aktualisiere ich den ersten Beitrag.

Übertragung der Werte funktioniert bei mir.

Bei Devices die keine änderbaren Register haben (z. B. HM-PB-2-WM55-2) erscheint ein leeres Popup was etwas irritierend ist. Vielleicht könnte in so einem Fall dort noch eine entsprechende Meldung ausgegeben werden?
Ein get regList liefert in so einem Fall nur:

list:         register | range              | peer     | description
   0: pairCentral      |   0 to 16777215    |          | pairing to central

Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation