Seite 4 von 7

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 05.09.2018, 08:27
von Bratmaxe
Dann heisst es wohl erstmal wieder ausbauen und auseinanderschrauben :lol:

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 07:53
von Bratmaxe
Moin,

so ich habe neue Erkenntnisse. So wie ich es aktuell sehe, können nur die Direktverknüpfungen zwischen Taster und Relais desselben Aktors nicht abgerufen werden, alles andere Funktioniert und ist auch nicht abhängig vom zweiten Aktor.

Verknüpfe ich nur die Tasten mit dem Relais (Schalter EIN +Schalter AUS), dann scheint auch das zu funktionieren.
Erst wenn ich mehrere Verknüpfungen anlege um (wie bei mir):
Taste1 Kurz = Licht an
Taste1 Lang = Schalsteckdose EIN/AUS
Taste2 Kurz = Licht aus
Taste2 Lang = Schaltsteckdose Ein für 30Minuten
werden die Konfigruationsdaten für die "interne" Verknüpfung nicht abgerufen.. Alles andere Funktioniert..

Jetzt habe ich zwei Fragen:
1. Wo finde ich den Sketch für den HM-LC-Sw1PBU-FM? Ich konnte keinen finden.. Nur den HM-LC-Sw2, hier ist aber die untere Taste ohne Funktion.
2. Wie müsste ich den Sketch des HB-UNI-SenAct-4-4 anpassen, damit beim kurzen Tastendruck direkt das Relais geschaltet wird (Verknüpfung in der Arduino Software statt in der Homematic)


Vom Prinzip her denke ich mir sowas hier:

Code: Alles auswählen

      if ( s == released || s == longreleased) {
        if (s==released){
          if (THIS IS BUTTON1){ //Keine Ahnung woher ich diese info bekomme, evtl über this->device()->?????
            JETZT Relais1_Pin --> HIGH  //Hier muss nicht nur der Pin gesetzt werden, sondern auch das Telegramm zur CCU angestoßen werden
          }
          if (THIS IS BUTTON2){//Keine Ahnung woher ich diese info bekomme, evtl über this->device()->?????
            JETZT Relais1_Pin --> LOW//Hier muss nicht nur der Pin gesetzt werden, sondern auch das Telegramm zur CCU angestoßen werden
          }
        }
Gruß Carsten

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 09:16
von papa
Bin mir jetzt gerade nicht sicher, was Du da überhaupt zusammengebaut hast. Ich gehe mal davon aus, dass Du 1 SwitchChannel hast (Kanal 1) und 2 RemoteChannels (Kanal 2 & 3).
Du musst initPeerings() dann wie folgt ändern:

Code: Alles auswählen

void initPeerings (bool first) {
  if ( first == true ) {
    HMID devid;
    sdev.getDeviceID(devid);
    Peer taster1(devid,2);
    Peer taster2(devid,3);
    // normale 2 Tastenbedienung
    sdev.channel(1).peer(taster1,taster2);
    // Taster1 long auf toggle ändern
    SwitchPeerList pl = sdev.channel(1).getList3(taster1).lg();
    pl.actionType(AS_CM_ACTIONTYPE_JUMP_TO_TARGET);
    pl.jtOn(AS_CM_JT_OFFDELAY);
    pl.jtOff(AS_CM_JT_ONDELAY);
    pl.jtDlyOn(AS_CM_JT_ON);
    pl.jtDlyOff(AS_CM_JT_OFF);
    pl.multiExec(false);
    // Taster2 auf 30min ändern
    pl = sdev.channel(1).getList3(taster2).lg();
    pl.actionType(AS_CM_ACTIONTYPE_JUMP_TO_TARGET);
    pl.jtOn(AS_CM_JT_ON);
    pl.jtOff(AS_CM_JT_ONDELAY);
    pl.jtDlyOn(AS_CM_JT_ON);
    pl.jtDlyOff(AS_CM_JT_OFF);
    pl.onTime(0x43); // müssten 30min sein
  }
}

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 09:47
von Bratmaxe
Hallo pa-pa,

deine Glaskugel hat Recht.. ich habe einen HM-LC-SW1PBU (Markenschalter 1-fach mit 2 Tasten).
Ich werde deinen Code heute Abend gleich mal testen, vielen Dank dafür..

Ich wollte eigentlich "nur" die internen Peerings für den kurzen Tastendruck in die Software bringen, aber es ist interessant zu sehen, wie du das für alles direkt gemacht hast. Das kann mir ggfls. bei einem anderen Projekt noch helfen.
Woher weiß der Aktor denn jetzt, welchen Aktor er schalten soll, durch die internen Peerings, das habe ich noch nicht verstanden.

Jetzt ist es im Sketch so, das dort 4 Taster (Kanal 1-4) und 4 Relais (Kanal 5-8) parametriert sind, dann müssten die Peerings sich doch wie folgt ändern (wenn ich es richtig verstanden habe):

Code: Alles auswählen

void initPeerings (bool first) {
  if ( first == true ) {
    HMID devid;
    sdev.getDeviceID(devid);
    Peer taster1(devid,1);
    Peer taster2(devid,2);
    // normale 2 Tastenbedienung
    sdev.channel(5).peer(taster1,taster2);
    
    // Taster1 long auf toggle ändern
    SwitchPeerList pl = sdev.channel(5).getList3(taster1).lg();
    pl.actionType(AS_CM_ACTIONTYPE_JUMP_TO_TARGET);
    pl.jtOn(AS_CM_JT_OFFDELAY);
    pl.jtOff(AS_CM_JT_ONDELAY);
    pl.jtDlyOn(AS_CM_JT_ON);
    pl.jtDlyOff(AS_CM_JT_OFF);
    pl.multiExec(false);
    // Taster2 auf 30min ändern
    pl = sdev.channel(5).getList3(taster2).lg();
    pl.actionType(AS_CM_ACTIONTYPE_JUMP_TO_TARGET);
    pl.jtOn(AS_CM_JT_ON);
    pl.jtOff(AS_CM_JT_ONDELAY);
    pl.jtDlyOn(AS_CM_JT_ON);
    pl.jtDlyOff(AS_CM_JT_OFF);
    pl.onTime(0x43); // müssten 30min sein
  }
Ist mein Gedankengang hier richtig?

Gruß Carsten

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 11:18
von papa
Ja genau. Du hast natürlich Recht, es fehlen noch die Peers in den RemoteChannel. ALso so

Code: Alles auswählen

void initPeerings (bool first) {
  if ( first == true ) {
    HMID devid;
    sdev.getDeviceID(devid);
    Peer switch1(devid,5);
    // Taster 1 & 2 mit Switch 1 verbinden
    sdev.channel(1).peer(switch1);
    sdev.channel(2).peer(switch1);

    Peer taster1(devid,1);
    Peer taster2(devid,2);
    // normale 2 Tastenbedienung
    sdev.channel(5).peer(taster1,taster2);
    
    // Taster1 long auf toggle ändern
    SwitchPeerList pl = sdev.channel(5).getList3(taster1).lg();
    pl.actionType(AS_CM_ACTIONTYPE_JUMP_TO_TARGET);
    pl.jtOn(AS_CM_JT_OFFDELAY);
    pl.jtOff(AS_CM_JT_ONDELAY);
    pl.jtDlyOn(AS_CM_JT_ON);
    pl.jtDlyOff(AS_CM_JT_OFF);
    pl.multiExec(false);
    // Taster2 auf 30min ändern
    pl = sdev.channel(5).getList3(taster2).lg();
    pl.actionType(AS_CM_ACTIONTYPE_JUMP_TO_TARGET);
    pl.jtOn(AS_CM_JT_ON);
    pl.jtOff(AS_CM_JT_ONDELAY);
    pl.jtDlyOn(AS_CM_JT_ON);
    pl.jtDlyOff(AS_CM_JT_OFF);
    pl.onTime(0x43); // müssten 30min sein
  }

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 11:43
von Bratmaxe
Super, vielen Dank werde ich heute Abend direkt testen. :D

Gruß Carsten

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 11:50
von jp112sdl
Evtl. sollte man dem Kind dann noch einen neuen Namen verpassen (mit extra Device ID) und den Code mit im Github aufnehmen.

Kann sicher der ein oder andere auch gebrauchen.

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 12:37
von Bratmaxe
Beim Kompilieren erhalte ich einen Fehler:

Code: Alles auswählen

'class as::GenericList' has no member named 'lg'
ist aber in dem Bereich den langen Tastendruck, den ich über die CCU anlegen würde, daher nicht so tragisch.
Ist das ein Schreibfehler, oder hab ich irgendwas vergessen zu aktualisieren?

Gruß Carsten

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 13:31
von papa
Da stimmt der Typ nicht - probiere mal

Code: Alles auswählen

SwitchPeerList pl = sdev.switchChannel(1).getList3(taster1).lg();

Re: HB-UNI-SenAct-4-4 auf HM-LC-Sw2PBU-FM flashen

Verfasst: 06.09.2018, 13:39
von Bratmaxe
Ja jetzt läuft es durch.. Danke ich habe die Funktion lg() einfach nicht finden können...