HM-RC-P1 (Taster: langer/kurzer Druck)
Jeder Button wird über die Funktion
registriert.
1a) Was passiert dann damit?
1b) Wird explizit immer der interne Pullup gesetzt? (
)
1b2) ...bzw wie kann ich angeben dass der Schalter einen externen pull-down verwendet um die Logik umzudrehen?
1c) Was genau setzt die remoteISR?
Code: Alles auswählen
#define remoteISR(device,chan,pin) class device##chan##ISRHandler { \
public: \
static void isr () { device.channel(chan).irq(); } \
}; \
device.channel(chan).button().init(pin); \
if( digitalPinToInterrupt(pin) == NOT_AN_INTERRUPT ) \
enableInterrupt(pin,device##chan##ISRHandler::isr,CHANGE); \
else \
attachInterrupt(digitalPinToInterrupt(pin),device##chan##ISRHandler::isr,CHANGE);
HM-LC-SW1-Pl (Schaltbare Steckdose)
2a) Ist das das einzige Relay?
2b) Greift er hierbei auf die Status Led zu?
2c) Brauche ich das immer bei einem Switch?
Code: Alles auswählen
void initPeerings (bool first) {
// create internal peerings - CCU2 needs this...
2d) Button Type: Welche Typen gibt es hier?
Code: Alles auswählen
ConfigToggleButton<SwitchType> cfgBtn(sdev);
vs
ConfigButton<RemoteType> cfgBtn(sdev);
2e) Was mache ich bei Geräten die sowohl schalten als auch steuern/senden?--> wozu ist diese Info notwendig?
Code: Alles auswählen
SwitchType sdev(devinfo,0x20);vsRemoteType sdev(devinfo,0x20);
Logik:
3a) Wo wird die Logik implementiert? Beispiel: Wenn Taster gedrückt dann Info an CCU senden?
3b) Relay schalten: Ist das hier die eigentliche Schalten des Relays + die Bekantmachung in der CCU?
Code: Alles auswählen
SwitchChannel<HALTYPE,PEERCOUNT,List0>::switchState(oldstate, newstate, delay);
[b]UND[/b]
// setup the device with channel type and number of channels
typedef MultiChannelDevice<Hal,SwChannel<Hal,PEERS_PER_CHANNEL>,1> SwitchType;
Beispiel von jerome: https://github.com/jp112sdl/Beispiel_As ... -CT-R1.ino
@jp112sdl
4a) AN Pin 15 hängt ein Taster mit internem Pull-UP, richtig? Was treibst du mit Pin 14?Hat das Gerät einen HW Schalter?
Code: Alles auswählen
// if A0 and A1 connected
// we use LOW for ON and HIGH for OFF
bool checkLowActive () {
pinMode(14, OUTPUT); // A0
pinMode(15, INPUT_PULLUP); // A1
digitalWrite(15, HIGH);
digitalWrite(14, LOW);
bool result = digitalRead(15) == LOW;
digitalWrite(14, HIGH);
return result;
}
...
void setup () {
...
bool low = (sdev.getConfigByte(CFG_LOWACTIVE_BYTE) == CFG_LOWACTIVE_ON) || checkLowActive();
sdev.channel(1).init(RELAY1_PIN, low);
Allgemein:
5) Woher kommt die Zahl des defines?:
6) Schaltet bei einem BAtteriebetriebene Sensor die LEDs ab... oder was ist der Unterschied?
Code: Alles auswählen
typedef AskSin<LedType,NoBattery,Radio<RadioSPI,11> > Hal; // PD3
vs
typedef AskSin<LedType,BatterySensor,RadioType> HalType;
7) Statusled gibt es immer nur eine?