Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

er.win
Beiträge: 26
Registriert: 25.09.2012, 07:25
System: CCU und Access Point
Danksagung erhalten: 1 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von er.win » 21.07.2020, 13:55

Hi Jerome!

Ja habe ich. Sieht mit dem Tsl2561Dual aktuell so aus.

Code: Alles auswählen

//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
//- -----------------------------------------------------------------------------------------------------------------------

// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER

#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>
// uncomment the following 2 lines if you have a TSL2561 connected at address 0x29
#include <Wire.h>
#include <sensors/Tsl2561Dual.h>

#include <MultiChannelDevice.h>
#include <Motion.h>

// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
#define LED_PIN 4
// Arduino pin for the config button
// B0 == PIN 8 on Pro Mini
#define CONFIG_BUTTON_PIN 8
// Arduino pin for the PIR
// A0 == PIN 14 on Pro Mini
#define PIR_PIN1 14
#define PIR_PIN2 15
#define PIR_PIN3 16
#define PIR_PIN4 17

// number of available peers per channel
#define PEERS_PER_CHANNEL 6

// all library classes are placed in the namespace 'as'
using namespace as;

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    {0x56,0x78,0x90},       // Device ID
    "EJ0000BM01",           // Device Serial
    {0x00,0x4a},            // Device Model
    0x16,                   // Firmware Version
    as::DeviceType::MotionDetector, // Device Type
    {0x01,0x00}             // Info Bytes
};

/**
 * Configure the used hardware
 */
typedef AvrSPI<10,11,12,13> SPIType;
typedef Radio<SPIType,2> RadioType;
typedef StatusLed<LED_PIN> LedType;
typedef AskSin<LedType,NoBattery,RadioType> BaseHal;
class Hal : public BaseHal {
public:
  void init (const HMID& id) {
    BaseHal::init(id);
    // set low voltage to 2.2V
    // measure battery every 1h
    //battery.init(seconds2ticks(60UL*60),sysclock);
    //battery.low(22);
    //battery.critical(19);
  }
} hal;


typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,Tsl2561Dual<TSL2561_ADDR_LOW, TSL2561_ADDR_HIGH, Tsl2561Dual<>::RETURN_TSL_MAX> > MChannel;


typedef MultiChannelDevice<Hal,MChannel,1> MotionType;
MotionType sdev(devinfo,0x20);

ConfigButton<MotionType> cfgBtn(sdev);

void setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  sdev.init(hal);
  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  motionISR(sdev,1,PIR_PIN1);
  motionISR(sdev,2,PIR_PIN2);
  motionISR(sdev,3,PIR_PIN3);
  motionISR(sdev,4,PIR_PIN4);
  
  sdev.initDone();
}

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
    // deep discharge protection
    // if we drop below critical battery level - switch off all and sleep forever
    //if( hal.battery.critical() ) {
      // this call will never return
     // hal.activity.sleepForever(hal);
   // }
    // if nothing to do - go sleep
    hal.activity.savePower<Sleep<>>(hal);
  }
}

er.win
Beiträge: 26
Registriert: 25.09.2012, 07:25
System: CCU und Access Point
Danksagung erhalten: 1 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von er.win » 21.07.2020, 14:04

Habe ich den Sensor Tsl2561Dual.h richtig zusammengebaut?

Code: Alles auswählen

// mit speziellen Dank an Jerome und papa!
// 20-07-2020




#ifndef __SENSORS_TSL2561_h__
#define __SENSORS_TSL2561_h__

#include <Sensors.h>
#include <Wire.h>
#include <TSL2561.h>

namespace as {

template <int ADDRESS_ONE=TSL2561_ADDR_LOW, int ADDRESS_TWO=TSL2561_ADDR_HIGH, uint8_t MODE=0>
class Tsl2561Dual : public Brightness {
public:
  enum Mode { RETURN_TSL_MIN = 0, RETURN_TSL_MAX };
private:
  ::TSL2561   _tsl1;
  ::TSL2561   _tsl2;
  bool        _x16;
public:
  Tsl2561Dual () : _tsl1(ADDRESS_ONE), _tsl2(ADDRESS_TWO), _x16(true) {}
  void init () {
    bool present1 = _tsl1.begin();
    if (present1 == false) { DPRINT("TSL2561 not found at address ");DHEXLN((uint8_t)ADDRESS_ONE); }
    bool present2 = _tsl2.begin();
    if (present2 == false) { DPRINT("TSL2561 not found at address ");DHEXLN((uint8_t)ADDRESS_TWO); }

    if( present1 == true  && present2 == true) {
      _tsl1.setGain(TSL2561_GAIN_16X);
      _tsl2.setGain(TSL2561_GAIN_16X);
      _tsl1.setTiming(TSL2561_INTEGRATIONTIME_101MS);
      _tsl2.setTiming(TSL2561_INTEGRATIONTIME_101MS);
    }

  }
  void measure (__attribute__((unused)) bool async=false) {
    if( present() == true ) {
      uint16_t b1 = _tsl1.getLuminosity(TSL2561_VISIBLE);
      if( b1 > 63000 && _x16 == true ) {
        _x16 = false;
        _tsl1.setGain(TSL2561_GAIN_0X);
        b1 = _tsl1.getLuminosity(TSL2561_VISIBLE);
      }
      else if ( b1 < 500 && _x16 == false ) {
        _x16 = true;
        _tsl1.setGain(TSL2561_GAIN_16X);
        b1 = _tsl1.getLuminosity(TSL2561_VISIBLE);
      }

      uint16_t b2 = _tsl2.getLuminosity(TSL2561_VISIBLE);
      if( b2 > 63000 && _x16 == true ) {
        _x16 = false;
        _tsl2.setGain(TSL2561_GAIN_0X);
        b2 = _tsl2.getLuminosity(TSL2561_VISIBLE);
      }
      else if ( b2 < 500 && _x16 == false ) {
        _x16 = true;
        _tsl2.setGain(TSL2561_GAIN_16X);
        b2= _tsl2.getLuminosity(TSL2561_VISIBLE);
      }

      DPRINT("Brightness 1: ");DDECLN(b1);
      DPRINT("Brightness 2: ");DDECLN(b2);

      switch (MODE) {
      case RETURN_TSL_MIN:
        _brightness = min(b1, b2);
        break;
      case RETURN_TSL_MAX:
        _brightness = max(b1, b2);
        break;
      }
    }
  }
};
}
#endif

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von jp112sdl » 21.07.2020, 16:06

Einen Fehler hab ich grad gefunden...
Mach mal aus

Code: Alles auswählen

    if( present1 == true  && present2 == true) {
      _tsl1.setGain(TSL2561_GAIN_16X);
      _tsl2.setGain(TSL2561_GAIN_16X);
      _tsl1.setTiming(TSL2561_INTEGRATIONTIME_101MS);
      _tsl2.setTiming(TSL2561_INTEGRATIONTIME_101MS);
    }
->

Code: Alles auswählen

    if( present1 == true  && present2 == true) {
      _present = true;
      _tsl1.setGain(TSL2561_GAIN_16X);
      _tsl2.setGain(TSL2561_GAIN_16X);
      _tsl1.setTiming(TSL2561_INTEGRATIONTIME_101MS);
      _tsl2.setTiming(TSL2561_INTEGRATIONTIME_101MS);
    }

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

er.win
Beiträge: 26
Registriert: 25.09.2012, 07:25
System: CCU und Access Point
Danksagung erhalten: 1 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von er.win » 21.07.2020, 19:03

Ich glaube ich habe den kleinen Großen Fehler gefunden.

Habe im Sensor Tsl2561Dual in der Zeile 16 Mode=0 durch Mode=1 ersetzt.

Code: Alles auswählen

// mit speziellem Dank an Jerome und papa!
// 20-07-2020




#ifndef __SENSORS_TSL2561_h__
#define __SENSORS_TSL2561_h__

#include <Sensors.h>
#include <Wire.h>
#include <TSL2561.h>

namespace as {

template <int ADDRESS_ONE=TSL2561_ADDR_LOW, int ADDRESS_TWO=TSL2561_ADDR_HIGH, uint8_t MODE=1>
class Tsl2561Dual : public Brightness {
public:
  enum Mode { RETURN_TSL_MIN = 0, RETURN_TSL_MAX };
private:
  ::TSL2561   _tsl1;
  ::TSL2561   _tsl2;
  bool        _x16;
public:
  Tsl2561Dual () : _tsl1(ADDRESS_ONE), _tsl2(ADDRESS_TWO), _x16(true) {}
  void init () {
    bool present1 = _tsl1.begin();
    if (present1 == false) { DPRINT("TSL2561_LOW not found at address ");DHEXLN((uint8_t)ADDRESS_ONE); }
    bool present2 = _tsl2.begin();
    if (present2 == false) { DPRINT("TSL2561_HIGH not found at address ");DHEXLN((uint8_t)ADDRESS_TWO); }

    if( present1 == true  && present2 == true) {
      _present = true;
      _tsl1.setGain(TSL2561_GAIN_16X);
      _tsl2.setGain(TSL2561_GAIN_16X);
      _tsl1.setTiming(TSL2561_INTEGRATIONTIME_101MS);
      _tsl2.setTiming(TSL2561_INTEGRATIONTIME_101MS);
    }

  }
  void measure (__attribute__((unused)) bool async=false) {
    if( present() == true ) {
      uint16_t b1 = _tsl1.getLuminosity(TSL2561_VISIBLE);
      if( b1 > 63000 && _x16 == true ) {
        _x16 = false;
        _tsl1.setGain(TSL2561_GAIN_0X);
        b1 = _tsl1.getLuminosity(TSL2561_VISIBLE);
      }
      else if ( b1 < 500 && _x16 == false ) {
        _x16 = true;
        _tsl1.setGain(TSL2561_GAIN_16X);
        b1 = _tsl1.getLuminosity(TSL2561_VISIBLE);
      }

      uint16_t b2 = _tsl2.getLuminosity(TSL2561_VISIBLE);
      if( b2 > 63000 && _x16 == true ) {
        _x16 = false;
        _tsl2.setGain(TSL2561_GAIN_0X);
        b2 = _tsl2.getLuminosity(TSL2561_VISIBLE);
      }
      else if ( b2 < 500 && _x16 == false ) {
        _x16 = true;
        _tsl2.setGain(TSL2561_GAIN_16X);
        b2= _tsl2.getLuminosity(TSL2561_VISIBLE);
      }

      DPRINT("Brightness 1: ");DDECLN(b1);
      DPRINT("Brightness 2: ");DDECLN(b2);

      switch (MODE) {
      case RETURN_TSL_MIN:
        _brightness = min(b1, b2);
        break;
      case RETURN_TSL_MAX:
        _brightness = max(b1, b2);
        break;
      }
    }
  }
};
}
#endif
Sicher ein Versuch der Hoffnungslosigkeit!

Und nun:
185931.png
Herzlichen Dank! Jetzt kann ich testen.

Mit ganz lieben Grüßen
Er.win

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von jp112sdl » 21.07.2020, 22:18

er.win hat geschrieben:
21.07.2020, 19:03
Habe im Sensor Tsl2561Dual in der Zeile 16 Mode=0 durch Mode=1 ersetzt.
Das hat keine Auswirkungen.
Das ist nur der Standardwert, wenn du den Template-Parameter im Sketch weg lässt.

Quasi so:

Code: Alles auswählen

typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,Tsl2561Dual<TSL2561_ADDR_LOW, TSL2561_ADDR_HIGH> > MChannel;
Dann wird der MODE=1 genutzt.

Es lag dann also wirklich nur noch am fehlenden _present = true;
Prima.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

er.win
Beiträge: 26
Registriert: 25.09.2012, 07:25
System: CCU und Access Point
Danksagung erhalten: 1 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von er.win » 22.07.2020, 01:00

Nochmals vielen herzlichen Dank Euch beiden!

Läuft prima!

In meinem nächsten Leben werde ich Programmierer und verschmelze diesen Bewegungsmeldern mit einem HB-UNI-SenAct-4-4.
Ich finde jeder Sensor hat sich auch einen Schalter/Aktor verdient! :D

Normal kann man kaufen. Das hier ist unbezahlbar!

Mit herzlichen Grüßen
Er.win

ivo-int
Beiträge: 300
Registriert: 13.04.2020, 08:55
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 16 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von ivo-int » 25.10.2020, 16:04

Hallo zusammen

Ich habe den Bewegungsmelder ebenfalls nachgebaut.

Für den Aufbau habe ich die Platine 328RFStamp von Jerome verwendet. Die Speisung erfolgt ab einer CR2477 Batterie. Als PIR verwende ich den AM312. Ich habe bei beiden Varianten den A0 Eingang verwendet.

Als erstes habe ich den Frequenztest durchgeführt und danach den Sketch pa-pa geladen. Jetzt habe ich ein merkwürdiges Verhalten.

Detektiert der PIR eine Bewegung wird dies gesendet und nach 2 Minuten keine Bewegung. Soweit in Ordnung. Nach erneuten 2 Minuten erneut eine Bewegung und das bei abgedecktem PIR.
Ich habe das einmal aufgezeichnet (328RFStamp).

Code: Alles auswählen

AskSin++ V4.1.3 (Oct 25 2020 15:05:23)
Address Space: 32 - 76
CC init1
CC Version: 14
 - ready
iVcc: 2720
Config Freq: 0x2165CA
Motion
<- 0D 01 A2 41 567801 00FFFF 01 01 00 70  - 69
-> 0A 01 80 02 00FFFF 567801 00  - 194
waitAck: 01
minInterval End
<- 0E 02 A2 10 567801 00FFFF 06 01 00 00 34  - 729
-> 0A 02 80 02 00FFFF 567801 00  - 854
waitAck: 01
Motion
<- 0D 03 A2 41 567801 00FFFF 01 02 00 70  - 1378
-> 0A 03 80 02 00FFFF 567801 00  - 1503
waitAck: 01
Ich habe dann das ganz einmal mit einem pro Mini mit dem identischen Sketch aufgebaut. Hier funktioniert der PIR einwandfrei.
Auch aufgezeichnet.

Code: Alles auswählen

AskSin++ V4.1.3 (Oct 25 2020 14:38:24)
Address Space: 32 - 76
CC init1
CC Version: 14
 - ready
iVcc: 2979
Config Freq: 0x216562
Motion
<- 0D 01 86 41 567801 000000 01 01 00 50  - 69
minInterval End
<- 0E 02 86 10 567801 000000 06 01 00 00 00  - 114
Der Unterschied ist das bei der Stamp ein "waitAck: 01" und danach gleich wieder eine Bewegung gesendet wird.

Zur Zeit bin ich etwas ratlos woher dieses Problem stammt. :? Kann mir jemand einen Tipp geben aus welchem Grund das mit der RFStamp nicht einwandfrei funktioniert oder wo ich ansetzen könnte?

Gruss Ivo
_______________________________________________________________________________________________________
Raspberrymatic auf einem Raspi 4 4GB (HB-RF-USB-2) mit 2 LAN Gateways,
42 RF Geräte, 4 IP Geräte und 21 Cuxd Geräte, 24 RF Eigenbau Geräte
hm_pdetect, E-Mail, XML-API, JB HB Devices, HB-TM-Devices-AddOn, CUx-Daemon, CCU-Historian auf einem separaten Raspi

Martin62
Beiträge: 681
Registriert: 09.12.2019, 21:24
Hat sich bedankt: 151 Mal
Danksagung erhalten: 61 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von Martin62 » 25.10.2020, 17:14

Schau dir mal die 328RF Stamp genau an, vielleicht wird da noch ein zweiter Eingang gesetzt. Ich persönlich kenne die Platine nicht und mach alles mit pro minis.
Gruß Martin
Gruß Martin

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von jp112sdl » 25.10.2020, 17:36

ivo-int hat geschrieben:
25.10.2020, 16:04
Ich habe dann das ganz einmal mit einem pro Mini mit dem identischen Sketch aufgebaut. Hier funktioniert der PIR einwandfrei.
Ja... du hast zwar die selbe Adresse gewählt, weshalb auch in der CCU was ankommt.
Jedoch hast du den Pro Mini nicht mit der Zentrale gepaart. Deshalb wird an 000000 nur ein Broadcast gesendet, welches nicht auf einen Ack wartet.
Deshalb fehlt in deinem 2. Beispiel das waitAck.

Der Vergleich 328RFSTAMP und PRO MINI ist erst dann identisch, wenn du den Pro Mini auch korrekt anlernst!

Was ein Hauptunterschied zwischen beiden Aufbauten ist, ist dass der Pro Mini einen ext. 8 MHz Takt nutzt und der 328P beim RFStamp nur mit dem internen Takt arbeiten kann. Der geht recht ungenau. Ob das aber Auswirkungen auf dein Problem hat - wissen wir erst, wenn du den Pro Mini Aufbau noch mal richtig machst. :wink:

Was auch noch sein kann, dass irgendwelche Parameterwerte quer hängen.

Mein Vorschlag:
- Gerät aus der CCU entfernen
- 328RFSTAMP noch mal resetten (Config Taster so lange drücken bis seriell RESET ausgegeben wird)
- dem PRO MINI eine andere Adresse und Seriennummer verpassen; anschließend auch resetten
- beide Geräte anlernen
-> schauen was passiert

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

ivo-int
Beiträge: 300
Registriert: 13.04.2020, 08:55
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 37 Mal
Danksagung erhalten: 16 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von ivo-int » 26.10.2020, 17:52

Hallo Martin
Martin62 hat geschrieben:
25.10.2020, 17:14
Schau dir mal die 328RF Stamp genau an, vielleicht wird da noch ein zweiter Eingang gesetzt. Ich persönlich kenne die Platine nicht und mach alles mit pro minis.
Gruß Martin
Ich habe nochmals alles überprüft und auch die Pins nachgelötet. Da ist alles korrekt.

Hallo Jerome
jp112sdl hat geschrieben:
25.10.2020, 17:36
Was auch noch sein kann, dass irgendwelche Parameterwerte quer hängen.

Mein Vorschlag:
- Gerät aus der CCU entfernen
- 328RFSTAMP noch mal resetten (Config Taster so lange drücken bis seriell RESET ausgegeben wird)
- dem PRO MINI eine andere Adresse und Seriennummer verpassen; anschließend auch resetten
- beide Geräte anlernen
-> schauen was passiert
Eins hatte ich noch vergessen zu schreiben. Die Verbindung habe ich bei beiden Geräten von "Gesichert" auf "Standard" gestellt.

Ich habe jetzt das ganze nochmals getestet.
- 328RFStamp von der CCU entfernt
- 328RFStamp Reset durchgeführt
- 328RFStamp neu angelernt
- Pro Mini mit neuer ID und Serial erstellt und angelernt

Das Ergebnis des 328RFStamp

Code: Alles auswählen

AskSin++ V4.1.3 (Oct 25 2020 15:05:23)
Address Space: 32 - 76
CC init1
CC Version: 14
 - ready
iVcc: 2866
Config Freq: 0x2165CA
Motion
<- 0D 01 A2 41 567801 00FFFF 01 01 00 50  - 69
-> 0A 01 80 02 00FFFF 567801 00  - 204
waitAck: 01
minInterval End
Motion
<- 0D 02 A2 41 567801 00FFFF 01 02 00 50  - 737
-> 0A 02 80 02 00FFFF 567801 00  - 862
waitAck: 01
minInterval End
Motion
<- 0D 03 A2 41 567801 00FFFF 01 03 00 50  - 1396
-> 0A 03 80 02 00FFFF 567801 00  - 1521
waitAck: 01
minInterval End
<- 0E 04 A2 10 567801 00FFFF 06 01 00 00 2C  - 2060
-> 0A 04 80 02 00FFFF 567801 00  - 2185
waitAck: 01
Motion
<- 0D 05 A2 41 567801 00FFFF 01 04 00 50  - 2711
-> 0A 05 80 02 00FFFF 567801 00  - 2836
waitAck: 01
minInterval End
Hier das Ergebnis des Pro Mini

Code: Alles auswählen

AskSin++ V4.1.3 (Oct 25 2020 18:14:48)
Address Space: 32 - 76
CC init1
CC Version: 14
 - ready
iVcc: 2918
Config Freq: 0x216562
Motion
<- 0D 01 A2 41 567802 00FFFF 01 01 00 50  - 71
-> 0A 01 80 02 00FFFF 567802 00  - 204
waitAck: 01
minInterval End
Motion
<- 0D 02 A2 41 567802 00FFFF 01 02 00 50  - 735
-> 0A 02 80 02 00FFFF 567802 00  - 870
waitAck: 01
minInterval End
<- 0E 03 A2 10 567802 00FFFF 06 01 00 00 38  - 1409
-> 0A 03 80 02 00FFFF 567802 00  - 1533
waitAck: 01
<- 0E 04 A2 10 567802 00FFFF 06 01 00 00 36  - 2064
-> 0A 04 80 02 00FFFF 567802 00  - 2187
waitAck: 01
<- 0E 05 A2 10 567802 00FFFF 06 01 00 00 37  - 2717
-> 0A 05 80 02 00FFFF 567802 00  - 2842
Hier noch die die Aufzeichnung von CCU-Histotian
PIR Vergleich.PNG
Für die Test habe ich die PIR's immer mit einem Lappen zugedeckt und nur zur Auslösung kurz geöffnet.

Deine Vermutung mit dem Takt könnte zutreffen. Aber wo soll ich jetzt weiter suchen?

Im Prinzip wäre der Einsatz eines Pro Mini machbar. Aber betr. Grösse bin ich auf die Stamp ausgewichen. Hier benötige ich ca. 1/3 des Platzes für den Aufbau.

Gruss Ivo
_______________________________________________________________________________________________________
Raspberrymatic auf einem Raspi 4 4GB (HB-RF-USB-2) mit 2 LAN Gateways,
42 RF Geräte, 4 IP Geräte und 21 Cuxd Geräte, 24 RF Eigenbau Geräte
hm_pdetect, E-Mail, XML-API, JB HB Devices, HB-TM-Devices-AddOn, CUx-Daemon, CCU-Historian auf einem separaten Raspi

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“