2fach Schalter für Batteriebetrieb - gibt es den?

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

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Gelegenheitsbastler
Beiträge: 586
Registriert: 15.10.2017, 07:29
Hat sich bedankt: 14 Mal
Danksagung erhalten: 41 Mal

2fach Schalter für Batteriebetrieb - gibt es den?

Beitrag von Gelegenheitsbastler » 13.05.2019, 20:26

Ich suche einen 2fach (oder auch 4fach, von dem ich nur 2 Kanäle nutze) für Batteriebetrieb.
Letztlich soll per HM-Fernbedienung ein Transistor innerhalb einer Akkulampe geschaltet werden. Evtl. brauche ich auch gar keinen Transistor, sondern mache das direkt über den I/O (geht das überhaupt, wenn der wieder in den Tiefschlaf geht?) Daher sollte der Stromverbrauch so gering wie möglich sein. Gut wäre, wenn der Sketch schon WOR hätte.
Welcher Sketch würde dieser Anforderung am nächsten kommen?
Das Komplizierteste an der Hausautomatisation ist der WAF.™ ​

Übersicht meiner Projekte


RaspberryMatic 3.47.22.20191026 auf Raspberry Pi 3B mit HomeMatic Funkmodul von ELV und RTC

Etliche selbst gebaute Aktoren und Sender

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: 2fach Schalter für Batteriebetrieb - gibt es den?

Beitrag von jp112sdl » 13.05.2019, 20:37

Nimmst den HM-LC-SW1-BA-PCB-Sketch, hängst noch 3 Kanäle an und änderst das Device Model auf 0x00, 0xAB

Dann hast den nativen HM 4 Kanal Batterieaktor. Wenn du nur 2 Kanäle nutzt, ist ja erstmal egal

VG,
Jérôme ☕️

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

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: 2fach Schalter für Batteriebetrieb - gibt es den?

Beitrag von stan23 » 14.05.2019, 10:13

Gelegenheitsbastler hat geschrieben:
13.05.2019, 20:26
Evtl. brauche ich auch gar keinen Transistor, sondern mache das direkt über den I/O (geht das überhaupt, wenn der wieder in den Tiefschlaf geht?)
Klar, die Ausgangspins bleiben so stehen. Deshalb die Empfehlung, alle Pins in den sparsamsten Modus zu schalten:
ATmega328p Datenblatt Kapitel 10.10.6 Port Pins
When entering a sleep mode, all port pins should be configured to use minimum power. The most important is then to ensure that no pins drive resistive loads.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Benutzeravatar
Gelegenheitsbastler
Beiträge: 586
Registriert: 15.10.2017, 07:29
Hat sich bedankt: 14 Mal
Danksagung erhalten: 41 Mal

Re: 2fach Schalter für Batteriebetrieb - gibt es den?

Beitrag von Gelegenheitsbastler » 14.05.2019, 11:13

Bild

Das funktioniert soweit schon mal sehr gut mit dem Originalsketch. Wie ich da aber weitere Kanäle hinzufügen kann? Da habe ich keinen Plan.

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: 2fach Schalter für Batteriebetrieb - gibt es den?

Beitrag von jp112sdl » 14.05.2019, 11:39

Der kann auch die Kanäle dynamisch aus der Sysinfo holen. Geht also auch as 2-fach Aktor.
https://asksinpp.de/rftypes/rf_s_4_ba.xml

So sollte es klappen

Code: Alles auswählen

  {0x01,0x01}             // Info Bytes
  

Code: Alles auswählen

class SwitchType : public MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,2,SwList0> {
public:
  typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,2,SwList0> DevType;
  

Code: Alles auswählen

  void setup () {
  sdev.channel(1).init(RELAY1_PIN);
  sdev.channel(2).init(RELAY2_PIN);
  }

VG,
Jérôme ☕️

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

Benutzeravatar
Gelegenheitsbastler
Beiträge: 586
Registriert: 15.10.2017, 07:29
Hat sich bedankt: 14 Mal
Danksagung erhalten: 41 Mal

Re: 2fach Schalter für Batteriebetrieb - gibt es den?

Beitrag von Gelegenheitsbastler » 14.05.2019, 20:06

Ich habe die Zeilen hinzugefügt, bzw. abgeändert. Außerdem noch eine Zeile ergänzt:

#define RELAY2_PIN 16

Passt das so??

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 USE_WOR
#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>

#include <Switch.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

#define RELAY1_PIN 17
#define RELAY2_PIN 16

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

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

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
    {0x42,0xA2,0xB7},       // Device ID
    "20190514_1",           // Device Serial
    {0x00,0x6c},            // Device Model
    0x10,                   // Firmware Version
    as::DeviceType::Switch, // Device Type
//    {0x01,0x00}             // Info Bytes
    {0x01,0x01}             // Info Bytes
      
};
/**
 * Configure the used hardware
 */
typedef AvrSPI<10,11,12,13> RadioSPI;
typedef AskSin<StatusLed<LED_PIN>,BatterySensor,Radio<RadioSPI,2> > Hal;

DEFREGISTER(Reg0,DREG_INTKEY,DREG_LEDMODE,MASTERID_REGS,DREG_LOWBATLIMIT)
class SwList0 : public RegList0<Reg0> {
public:
  SwList0(uint16_t addr) : RegList0<Reg0>(addr) {}
  void defaults () {
    clear();
    lowBatLimit(22);
  }
};

// setup the device with channel type and number of channels
// class SwitchType : public MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> {
// public:
// typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,1,SwList0> DevType;

  class SwitchType : public MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,2,SwList0> {
  public:
  typedef MultiChannelDevice<Hal,SwitchChannel<Hal,PEERS_PER_CHANNEL,SwList0>,2,SwList0> DevType;
  


  SwitchType (const DeviceInfo& i,uint16_t addr) : DevType(i,addr) {}
  virtual ~SwitchType () {}

  virtual void configChanged () {
    DevType::configChanged();
    uint8_t lowbat = getList0().lowBatLimit();
    DDECLN(lowbat);
    if( lowbat > 0 ) {
      battery().low(lowbat);
    }
  }
};

Hal hal;
SwitchType sdev(devinfo,0x20);
ConfigToggleButton<SwitchType> cfgBtn(sdev);
#ifndef USE_WOR
BurstDetector<Hal> bd(hal);
#endif

void initPeerings (bool first) {
  // create internal peerings - CCU2 needs this
  if( first == true ) {
    HMID devid;
    sdev.getDeviceID(devid);
    for( uint8_t i=1; i<=sdev.channels(); ++i ) {
      Peer ipeer(devid,i);
      sdev.channel(i).peer(ipeer);
    }
  }
}


void setup () {
  DINIT(57600,ASKSIN_PLUS_PLUS_IDENTIFIER);
  bool first = sdev.init(hal);
  sdev.channel(1).init(RELAY1_PIN);
  sdev.channel(2).init(RELAY2_PIN);     // zweiter Kanal
  buttonISR(cfgBtn,CONFIG_BUTTON_PIN);
  initPeerings(first);
#ifndef USE_WOR
  // start burst detection
  bd.enable(sysclock);
#endif
  // stay on for 15 seconds after start
  hal.activity.stayAwake(seconds2ticks(15));
  // measure battery every hour
  hal.battery.init(seconds2ticks(60UL*60),sysclock);
  sdev.initDone();
}

void loop() {
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
  if( worked == false && poll == false ) {
    hal.activity.savePower<Sleep<> >(hal);
  }
}

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: 2fach Schalter für Batteriebetrieb - gibt es den?

Beitrag von jp112sdl » 14.05.2019, 21:30

Joa, sollte so gehen. Der Sw1 kann auch Channelcount from Sysinfo

VG,
Jérôme ☕️

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

Antworten

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