Askin++ fremde Klasse ausführen

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

Moderator: Co-Administratoren

chka
Beiträge: 2073
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 84 Mal
Danksagung erhalten: 45 Mal

Askin++ fremde Klasse ausführen

Beitrag von chka » 08.08.2020, 15:29

Hallo zusammen,

ich habe mal ne frage, ich möchte an einem Askin++ HM-LC-Sw1-Ba-PCB nicht das Relais schalten sonder eine Klasse ansprechen die z.b eine LED direkt am Nano Pro schaltet.
Kann ich anstatt dem DigitalenOutput einen Virtuellen oder eine interne Variable im Nano ansprechen?

Ich nehme mal an in der Zeile

Code: Alles auswählen

sdev.channel(1).init(RELAY1_PIN);
wird der Pin dem ersten Kanal zugeordnet.
Ich möchte keinem Pin sonder einfach nur eine andere Klasse starten die eine Reihe an befehlen per IR-Led rausschicken.

Ich habe mir jetzt erstmal so geholfen das ich den aktuellen Status des Pins auslese, aber das ist ja nicht Sinn der Sache.

Code: Alles auswählen

int digitalReadOutputPin(uint8_t pin)
{
 uint8_t bit = digitalPinToBitMask(pin);
 uint8_t port = digitalPinToPort(pin);
 if (port == NOT_A_PIN) 
   return LOW;

 return (*portOutputRegister(port) & bit) ? HIGH : LOW;
}
Quelle: https://forum.arduino.cc/index.php?topi ... #msg304419

Danke und schmelzt nicht weg.
Debmatic - CuL V2 868mHz- CuxDemon - PioTek Tracker - Velux und Somfy Anbindung- io.Broker aufm ESX 6.7
Keine Support PNs Danke!

jp112sdl
Beiträge: 7694
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 415 Mal
Danksagung erhalten: 894 Mal
Kontaktdaten:

Re: Askin++ fremde Klasse ausführen

Beitrag von jp112sdl » 08.08.2020, 17:34

Du überschreibst einfach die switchState-Methode:

Code: Alles auswählen

class SwChannel : public SwitchChannel<Hal,PEERS_PER_CHANNEL, SwList0> {
public:
  SwChannel () {};
  virtual ~SwChannel () {};

  void init () {
    BaseChannel::changed(true);
  }
  virtual void switchState(__attribute__((unused)) uint8_t oldstate,uint8_t newstate,__attribute__((unused)) uint32_t delay) {
    if ( newstate == AS_CM_JT_ON ) {
          // hier das ausführen, was bei EIN passieren soll
    }
    else if ( newstate == AS_CM_JT_OFF ) {
          // hier das ausführen, was bei AUS passieren soll
    }
    BaseChannel::changed(true);
  }
};

class SwitchType : public MultiChannelDevice<Hal,SwChannel,1,SwList0> {
public:
  typedef MultiChannelDevice<Hal,SwChannel,1,SwList0> DevType;
  ...
und änderst auch

Code: Alles auswählen

sdev.channel(1).init();

VG,
Jérôme ☕️

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

PN sind deaktiviert!

jp112sdl
Beiträge: 7694
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 415 Mal
Danksagung erhalten: 894 Mal
Kontaktdaten:

Re: Askin++ fremde Klasse ausführen

Beitrag von jp112sdl » 08.08.2020, 17:35

Mir fällt grad das DMX-Projekt ein, wo ich sowas schon mal umgesetzt habe.
https://github.com/jp112sdl/HB-UNI-DMX- ... MASTER.ino

VG,
Jérôme ☕️

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

PN sind deaktiviert!

chka
Beiträge: 2073
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 84 Mal
Danksagung erhalten: 45 Mal

Re: Askin++ fremde Klasse ausführen

Beitrag von chka » 08.08.2020, 17:36

danke schaue ich mir genauer an
Debmatic - CuL V2 868mHz- CuxDemon - PioTek Tracker - Velux und Somfy Anbindung- io.Broker aufm ESX 6.7
Keine Support PNs Danke!

chka
Beiträge: 2073
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 84 Mal
Danksagung erhalten: 45 Mal

Re: Askin++ fremde Klasse ausführen

Beitrag von chka » 08.08.2020, 18:52

Geht danke!!!

jetzt kann weiter gehen
Debmatic - CuL V2 868mHz- CuxDemon - PioTek Tracker - Velux und Somfy Anbindung- io.Broker aufm ESX 6.7
Keine Support PNs Danke!

papa
Beiträge: 550
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 74 Mal

Re: Askin++ fremde Klasse ausführen

Beitrag von papa » 08.08.2020, 19:53

Im Template des SwitchChannel gibt es genau für sowas den IODriver

Code: Alles auswählen

template <class HalType,int PeerCount,class List0Type,class IODriver=ArduinoPins>
class SwitchChannel : public ActorChannel<HalType,SwitchList1,SwitchList3,PeerCount,List0Type,SwitchStateMachine> {
Schau Dir mal die Klasse ArduinoPins an - in Pins.h. Die ist ganz simple.

Code: Alles auswählen

class ArduinoPins {
public:
  inline static void setOutput   (uint8_t pin) { pinMode(pin,OUTPUT); }
  inline static void setInput    (uint8_t pin) { pinMode(pin,INPUT);  }
  inline static void setHigh     (uint8_t pin) { digitalWrite(pin,HIGH); }
  inline static void setLow      (uint8_t pin) { digitalWrite(pin,LOW); }
  inline static uint8_t getState (uint8_t pin) { return digitalRead(pin); }
};
Du musst nur eine Klasse mit Deiner Implementierung machen und im Template angeben.
Anfragen zur AskSin++ werden nur im Forum beantwortet

jp112sdl
Beiträge: 7694
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 415 Mal
Danksagung erhalten: 894 Mal
Kontaktdaten:

Re: Askin++ fremde Klasse ausführen

Beitrag von jp112sdl » 08.08.2020, 21:15

An die Variante hatte ich gar nicht gedacht.

VG,
Jérôme ☕️

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

PN sind deaktiviert!

papa
Beiträge: 550
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 6 Mal
Danksagung erhalten: 74 Mal

Re: Askin++ fremde Klasse ausführen

Beitrag von papa » 08.08.2020, 22:33

jp112sdl hat geschrieben:
08.08.2020, 21:15
An die Variante hatte ich gar nicht gedacht.
Hast Du aber auch schon genutzt :D
Anfragen zur AskSin++ werden nur im Forum beantwortet

jp112sdl
Beiträge: 7694
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 415 Mal
Danksagung erhalten: 894 Mal
Kontaktdaten:

Re: Askin++ fremde Klasse ausführen

Beitrag von jp112sdl » 08.08.2020, 22:57

papa hat geschrieben:
08.08.2020, 22:33
jp112sdl hat geschrieben:
08.08.2020, 21:15
An die Variante hatte ich gar nicht gedacht.
Hast Du aber auch schon genutzt :D
Als ob ich bei der Anzahl an Projekten noch einen Überblick hätte :mrgreen: :wink: :mrgreen:

VG,
Jérôme ☕️

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

PN sind deaktiviert!

chka
Beiträge: 2073
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 84 Mal
Danksagung erhalten: 45 Mal

Re: Askin++ fremde Klasse ausführen

Beitrag von chka » 09.08.2020, 10:35

ich nehme jetzt mal das dmx Sketch auseinander um zu verstehen wie es geht.
der Vorteil an dem Sketsch ist das ich es gut abwandern kann auf die Idee mit dem ir-codes senden

Danke euch
Debmatic - CuL V2 868mHz- CuxDemon - PioTek Tracker - Velux und Somfy Anbindung- io.Broker aufm ESX 6.7
Keine Support PNs Danke!

Antworten

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