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

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

Moderator: Co-Administratoren

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

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

Beitrag von Bratmaxe » 05.09.2018, 08:27

Dann heisst es wohl erstmal wieder ausbauen und auseinanderschrauben :lol:
Gruß Carsten

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

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

Beitrag von Bratmaxe » 06.09.2018, 07:53

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
Gruß Carsten

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

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

Beitrag von papa » 06.09.2018, 09:16

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
  }
}
Anfragen zur AskSin++ werden nur im Forum beantwortet

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

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

Beitrag von Bratmaxe » 06.09.2018, 09:47

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
Gruß Carsten

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

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

Beitrag von papa » 06.09.2018, 11:18

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
  }
Anfragen zur AskSin++ werden nur im Forum beantwortet

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

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

Beitrag von Bratmaxe » 06.09.2018, 11:43

Super, vielen Dank werde ich heute Abend direkt testen. :D

Gruß Carsten
Gruß Carsten

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

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

Beitrag von jp112sdl » 06.09.2018, 11:50

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.

VG,
Jérôme ☕️

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

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

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

Beitrag von Bratmaxe » 06.09.2018, 12:37

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
Gruß Carsten

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

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

Beitrag von papa » 06.09.2018, 13:31

Da stimmt der Typ nicht - probiere mal

Code: Alles auswählen

SwitchPeerList pl = sdev.switchChannel(1).getList3(taster1).lg();
Anfragen zur AskSin++ werden nur im Forum beantwortet

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

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

Beitrag von Bratmaxe » 06.09.2018, 13:39

Ja jetzt läuft es durch.. Danke ich habe die Funktion lg() einfach nicht finden können...
Gruß Carsten

Antworten

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