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: 2482
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 300 Mal
Danksagung erhalten: 116 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.
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 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

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 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

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

Re: Askin++ fremde Klasse ausführen

Beitrag von chka » 08.08.2020, 17:36

danke schaue ich mir genauer an
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

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

Re: Askin++ fremde Klasse ausführen

Beitrag von chka » 08.08.2020, 18:52

Geht danke!!!

jetzt kann weiter gehen
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 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: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 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

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 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: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 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

chka
Beiträge: 2482
Registriert: 13.02.2012, 20:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 300 Mal
Danksagung erhalten: 116 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
RaspberryMatic - CuL 868mHz- CuxDemon - PioTek Tracker - Velux mit KLF200 und Somfy Anbindung- io.Broker auf Proxmox NUC6I3SYH i3-6100U RAM: 40Gig Crucial 8GB DDR4 CT2K8G4SFS824A + 32GB DDR4CT32G4SFD8266

Antworten

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