AskSinPP / Dokumentation + Howtos

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

Moderator: Co-Administratoren

Antworten
rendgeor
Beiträge: 5
Registriert: 01.07.2020, 12:28
System: CCU

AskSinPP / Dokumentation + Howtos

Beitrag von rendgeor » 10.01.2021, 23:17

Hallo,
danke für dieses tolle Projekt. @papa @jp112sdl
Leider finde ich es schwierig sich aus den vorhanden Examples etwas zusammenzubasteln.

1) Gibt es daher eine Doku welche Variablen bei <Remote.h> oder <Switch.h> gesetzt werden müssen?
2) Wo läuft die main loop?
3) Wo werden GPIOs verarbeitet... und wie die Daten verarbeitet + an die CCu versendet?
4) Wie werden Daten von der CCU empfangen um damit z.B. ein Relay über einen GPO geschalten?

Solche Mini Howtos würden helfen... wenn ich vorhandene INOs anschaue ist ganz viel noch im Dunkeln;)

rendgeor
Beiträge: 5
Registriert: 01.07.2020, 12:28
System: CCU

Re: AskSinPP / Dokumentation + Howtos

Beitrag von rendgeor » 11.01.2021, 00:02

HM-RC-P1 (Taster: langer/kurzer Druck)

Code: Alles auswählen

#include <Remote.h>
Jeder Button wird über die Funktion

Code: Alles auswählen

remoteISR(sdev,1,BTN1_PIN);
registriert.
1a) Was passiert dann damit?
1b) Wird explizit immer der interne Pullup gesetzt? (

Code: Alles auswählen

Button.h: pinMode(cpin, INPUT_PULLUP);
)
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)

Code: Alles auswählen

#include <Switch.h>
2a) Ist das das einzige Relay?

Code: Alles auswählen

#define RELAY1_PIN 0
2b) Greift er hierbei auf die Status Led zu?

Code: Alles auswählen

this->device().led()...
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?:

Code: Alles auswählen

#define PEERS_PER_CHANNEL XX
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?

Code: Alles auswählen

typedef StatusLed<12> LedType; // PD4

Martin62
Beiträge: 681
Registriert: 09.12.2019, 21:24
Hat sich bedankt: 151 Mal
Danksagung erhalten: 61 Mal

Re: AskSinPP / Dokumentation + Howtos

Beitrag von Martin62 » 11.01.2021, 06:56

Hallo und willkommen im Club. :wink:
Eine eindeutige Dokumentation gibt es nicht. Mein Anlaufpunkt ist Asksinpp.de und das Forum. Ein Tip von mir, nehme ein Projekt und suche danach im Forum. Man findet schon einiges an Erklärungen ist aber alles sehr anstrengend. "Man muss nicht alles wissen, man muss nur wissen wo es steht. Ich habe aufgegeben da irgendwie durchzusteigen. Wenn ich ein Gerät brauche suche ich im Forum danach und dabei bekommt man schon einiges mit.
Gruß Martin

Benutzeravatar
Psi
Beiträge: 512
Registriert: 09.08.2018, 19:58
Wohnort: Nürnberg
Hat sich bedankt: 27 Mal
Danksagung erhalten: 90 Mal

Re: AskSinPP / Dokumentation + Howtos

Beitrag von Psi » 11.01.2021, 09:15

Wenn jemand ein Teilgebiet verstanden hat könnte derjenige dies auch auf asksinpp.de erleutern und dokumentieren. Leider möchten die meisten nur Doku haben und keine schreiben.

Horbi
Beiträge: 199
Registriert: 29.05.2019, 12:51
Hat sich bedankt: 19 Mal
Danksagung erhalten: 65 Mal

Re: AskSinPP / Dokumentation + Howtos

Beitrag von Horbi » 11.01.2021, 15:17

Doku ist generell ein leidiges Thema.
Im Prinzip brauchst Du sie um anzufangen und die Library zu verstehen.
Hast Du die Lib verstanden kannst Du die Doku schreiben, brauchst sie aber nicht mehr und verwendest lieber die Zeit um schöne Sachen zu bauen :-)

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: AskSinPP / Dokumentation + Howtos

Beitrag von jp112sdl » 11.01.2021, 15:20

Horbi hat geschrieben:
11.01.2021, 15:17
Im Prinzip brauchst Du sie um anzufangen und die Library zu verstehen.
Hast Du die Lib verstanden kannst Du die Doku schreiben, brauchst sie aber nicht mehr und verwendest lieber die Zeit um schöne Sachen zu bauen
Schön zusammengefasst :D

VG,
Jérôme ☕️

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

rendgeor
Beiträge: 5
Registriert: 01.07.2020, 12:28
System: CCU

Re: AskSinPP / Dokumentation + Howtos

Beitrag von rendgeor » 11.01.2021, 15:21

Wenn mir einer von euch meine oben stehenden Fragen beantwortet, dient das auch später allen anderen, um die Unterschiede zu verstehen.
Biete mich dann auch gerne an um ein Howto zu schreiben für eure Webseite @papa

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: AskSinPP / Dokumentation + Howtos

Beitrag von jp112sdl » 11.01.2021, 15:30

rendgeor hat geschrieben:
11.01.2021, 15:21
Wenn mir einer von euch meine oben stehenden Fragen beantwortet, dient das auch später allen anderen, um die Unterschiede zu verstehen.
Das sind alles relativ kontextlose Fragen.
Es kommen immer mal wieder Fragen-Fragmente von verschiedenen Usern auf, die zwar dem jeweiligen Fragesteller in dem Moment helfen, aber in diesen "Fetzen" der Allgemeinheit nicht wirklich nachhaltig was bringt.
z.B.:
rendgeor hat geschrieben:
11.01.2021, 00:02
2c) Brauche ich das immer bei einem Switch?
Lautet die Antwort: NEIN.

Um jetzt aber auszuführen, wann man es braucht und wann nicht, fehlt es mir auch an Muße, alles aufzuschreiben.


Btw.: Um einen einfachen Sensor / Taster / Aktor zu bauen, kann man sich an den Beispielen bedienen.
Was darüber hinaus geht, setzt mindestens noch das Wissen "Wie bringe ich das Gerät der CCU bei" voraus.
Und da kommen dann die nächsten Fragen...

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: AskSinPP / Dokumentation + Howtos

Beitrag von papa » 11.01.2021, 20:24

Tja - Doku ist halt immer Mehraufwand, für den in der Freizeit einfach nicht genug Zeit bleibt. Ich hatte schon mal angefangen mit Doxygen wenigstens die Klassenstruktur zu erzeugen. Aber das ist halt auch nicht zum Einsteigen.
Im Prinzip sind die Lib so aufgebaut, dass man für die Standardfälle ohne viel Code im Sketch auskommt. Dafür ist das ganze sicherlich nicht ganz einfach zu durchdringen ....... irgendwas ist halt immer :-)
Anfragen zur AskSin++ werden nur im Forum beantwortet

Antworten

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