AskSin++ Library

Begonnen von papa, 08 September 2016, 11:11:25

Vorheriges Thema - Nächstes Thema

Sequenzial

Moin,

ich bau mir gerade aus einem alten R2D2 einen Statusmelder für den Zustand meines Hauses (alle Fenster zu/Licht aus/Status Alarmanlage, Sirene für Alarm, usw...).
Das funktioniert mit meinem Nano Clone (5V/16Mhz) als HM-LC-SW4-SM grundsätzlich auch ganz gut, aber weil noch einige Funktionen hinzu kommen sollen, gehen mir in der Planung die digitalen PINs aus.

Also stecke ich gerade fest beim definieren von Buttons über analoge Ports...

Zuerste definiere ich den Channel 2 Knopf PIN (direkt nach dem Config_Button_Pin).
Dieser soll über den A3 PIN laufen:

#define CHANNEL2_BUTTON_PIN A3


Dann setze ich die Klasse (direkt unter dem CfgButton)


class Channel2Button : public Button {
public:
  Channel2Button () {
    setLongPressTime(seconds2ticks(60UL*60*60)); // 1hour
  }
  virtual void state (uint8_t s) {
    Button::state(s);
    if( s == Button::pressed ) {
      sdev.channel(2).toggleState();
    }
  }
};
Channel2Button c2Btn;
void c2BtnISR () { c2Btn.check(); }


Und im Setup() (direkt nach dem cfgBtn.init) setze ich den Interrupt:


c2Btn.init(CHANNEL2_BUTTON_PIN);
attachPinChangeInterrupt(CHANNEL2_BUTTON_PIN,c2BtnISR,CHANGE); 


Sketch compiliert und hochgeladen: ok

Aber egal was ich an A3 anlege (3,3V; 5V; Masse) ... es passiert nichts.
Geht das damit überhaupt?

Wenn ich das ganz auf PIN 9 (digital) durchspiele, funktioniert es.

Hat jemand eine Idee, ob und wie das via analog Ports funktioniert?

Danke!

Gruß
Hajo

papa


Schau Dir mal das HM-RC-4 Example an. Werden auch die analog Pins als Eingang für die Taster verwendet. Du musst anstatt A3 die Pin Nummer angeben.


#define CHANNEL2_BUTTON_PIN 17


Damit sollte es funktionieren.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Sequenzial

Zitat von: papa am 25 März 2017, 07:12:01
Schau Dir mal das HM-RC-4 Example an. Werden auch die analog Pins als Eingang für die Taster verwendet. Du musst anstatt A3 die Pin Nummer angeben.


#define CHANNEL2_BUTTON_PIN 17


Damit sollte es funktionieren.

Bestätigt. Klappt! Danke!

kadettilac89

Zitat von: xkalle01 am 20 März 2017, 12:07:56
Hallo papa und Dietmar,

Ich lese diesen Threat schon einige Zeit und habe meinen Universalsensor Nachbau mit einem BME280 mit der AskSinPP am Laufen.
Läuft alles soweit prima.


Hört sich interessant an. Du fragst parallel nach List0, d. h. im Sensor fehlen die RegList für Altitude, LowBatLimit, PairCentral ...? DAmit kannst du auch noch nicht sagen ob "Lazy Config" funktioniert, oder verstehe ich den Zusammenhang zu List0 falsch?

Wenn das "irgendwann" funktioniert wäre ich an deinem Beispiel interessiert. Halte uns auf dem Laufenden :)

Dietmar63

Ich bastele immer noch(wenn ich Zeit habe) an dem Generator für die Erzeugung von Messageklassen und Listklassen aus dem XML heraus.
Zur Zeit stecken noch einige Fehler darin - Am Ende wird es aber glaube ich funktionieren.

Die MessageKlassen zu generieren ist einfacher als die Generierung der Listklassen. Das liegt zum einen daran, dass ich mich mit den Reg-Listen nicht auskenne und alles aus dem Code schließen muss oder auf Feedback angewiesen bin.

Bei den MessageKlassen fehlt nicht mehr viel.
Allerdings tue ich mich schwer mit dem Einbau in meine HM-Geräte, weil sie ja im Moment  schon so schön funktionieren.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

papa

"Lazy Config" sollte funktionieren - soweit wie ich das verstanden habe.  ;D
Hierzu ist das WKMEUP Flag in der Nachricht zu setzen - so wie im HM-SEC-MDIR Example. Mit dem HM-WDS10-TH-O Example habe ich es noch nicht probiert.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

east

Hallo,

bin seit kurzem von NewAsksin auf AsksinPP umgestiegen, aus Hoffnung mein Unterfangen endlich vollenden zu können. Allerdings bräuchte ich anfängliche Hilfe.

Habe versucht nachzuvollziehen, wie das mit der deklaration der Devices in der V1 funktioniert.

Sprich.... mein Vorhaben ist es, zwei Kanäle des HM-RC... und zwei Kanäle des HM-SW... zu kombinieren.

Ich weiss auch, das so ein Geträtetyp vermutlich nicht in Homematic existiert. Heisst das, dass ich ein XML-file bauen muss, um solch ein Kombigerät entwickeln zu können?

Vielen Dank im Voraus.


Ps.: Hut ab vor den ganzen Schöpfern und nartürlich den Mitwirkenden der Unternehmung!!!!

papa

Zitat von: east am 09 Mai 2017, 17:16:11
Hallo,

bin seit kurzem von NewAsksin auf AsksinPP umgestiegen, aus Hoffnung mein Unterfangen endlich vollenden zu können. Allerdings bräuchte ich anfängliche Hilfe.

Habe versucht nachzuvollziehen, wie das mit der deklaration der Devices in der V1 funktioniert.

Sprich.... mein Vorhaben ist es, zwei Kanäle des HM-RC... und zwei Kanäle des HM-SW... zu kombinieren.

Gemischte Kanäle geht leider noch nicht und lässt sich mit dem Templatekonzept auch leidernicht so einfach umsetzen. Das steht aber weit oben auf meiner Liste für die aktuelle Enwicklung.

Zitat von: east am 09 Mai 2017, 17:16:11
Ich weiss auch, das so ein Geträtetyp vermutlich nicht in Homematic existiert. Heisst das, dass ich ein XML-file bauen muss, um solch ein Kombigerät entwickeln zu können?

Das ist ein weiteres Problem. Für eine CCU werden (glaube ich) nur entsprechende XML-Files benötigt. Für FHEM muss man glaube ich, eine Erweiterung als Perl-Modul schreiben.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

east

Schade. Aber vielen Dank für deine Antwort. Habe alternativ dazu in der NewAsksin Branch-DevAES gelesen das trilu einen Mischbetrieb testweise aufbauen konnte. Werde ihn mal, um Hilfe bitten.

papa

#249
Im master Branch ist jetzt die Unterstützung für gemischte Kanäle enthalten. Schau Dir mal das HM-SEN-MDIR-WM55 Beispiel an. Da werden 2 Remote-Channel mit einem Motion-Channel kombiniert.

Alerdings plane ich da noch ein paar Umbauten, so dass es sein kann, das sich Schnittstellen auch nochmal ändern.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

east

#250
Super Arbeit. Vielen Dank für deine so zuvor kommende Hilfe.

Habe aber jetzt eine andere Idee für mich gefunden. Dies habe ich in dem NewAsksin-Thread schon mitgeteilt, aber wie Du schon sagtest..... da kann man lange auf ANtwort warten.



Habe mal versuchsweise mir den ConfButton angeschaut. Wenn ich den zum schalten des ersten Kanals benutze, bekomme ich ja über umwege meine Rückmeldung der CCU. Heisst ich bau mir ein Programm in der CCU, wo ich über den ersten Kanal einen weiteren schalte und schon habe ich meine Rückkopplung.

Wenn ich jetzt nur noch für die übrigen Kanäle jeweils einen Button programmiere, habe ich das was ich wollte. Einmal mit den Buttons eine Remote zur CCU und zum anderen Switch-Kanäle die benötige.

Muss ich einen normalen Button auch in der AS.cpp bzw .h erstellen, um dies zu programmieren, oder gibt es einen einfachen weg?

Das ich den Tastendruck eines neuen Eingangs einfach mit in das Scenario des ConfigButtons packe?

if (mode == 1) {                  // keyShortSingle

     
if (scn == 1) pHM->sendDEVICE_INFO();                                    // send pairing string
     
if (((scn == 2 || btnNew == 1) ) && (modTbl[0].cnl)) modTbl[0].mDlgt(0,1,0,NULL,0);               // send toggle to user


Hoffe ist kein Problem, dass ich hier NewAsksin Fragen stelle. Habe so meine problemchen mit C++. Sorry.

east

Werde mich trotzdem mal an der Asksin PP versuchen.

papa

Zitat von: east am 11 Mai 2017, 23:51:22
Werde mich trotzdem mal an der Asksin PP versuchen.

Na im Prinzip musst Du ja nur den PIR-Channel durch 2 Switch-Channels ersetzen. Dann noch das DEVICE_MODEL auf etwas eigenes anpassen.

Für die CCU müsstest Du dann noch ein passendes XML machen.


Zitat von: east am 11 Mai 2017, 23:51:22
Habe so meine problemchen mit C++.

Da kannst Du hier bestimmt noch was lernen ....  ;) AskSin++ nutzt die Möglichkeiten von C++ schon recht weit aus. Frag einfach nach, wenn Du was nicht verstehst.

Vielleicht gibt es demnächst noch eine einfachere Lösung. Ich habe noch ein cooles Feature auf meiner TODO Liste. Ich würde gern die Möglichkeit einbauen, auf einer Hardware 2 oder auch noch mehr logische Devices zu ermöglichen. Dann könnte man einfach einen 2-Kanal-Switch und eine 2-Kanal-Fernbedienung aus den existierenden Geräten nehmen und zusammen auf eine Hardware bringen. In FHEM & CCU würde das dann wie 2 separate Geräte aussehen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

east

Habe schon direkt eine Frage bezüglich der HM-SEN-MDIR-WM55. Atmel Studio ist da für den Anfang sehr hilfreich, um durchs Programm zu kommen.

Gehe ich richtig in der Annahme, das die Klasse "class BtnPirList0Data" nur für die Berechnung des anzuzeigenden Analogwert da ist?

Wenn dann bräuchte ich diese ja für den Switch nicht. Richtig?

papa

Zitat von: east am 12 Mai 2017, 09:41:50
Habe schon direkt eine Frage bezüglich der HM-SEN-MDIR-WM55. Atmel Studio ist da für den Anfang sehr hilfreich, um durchs Programm zu kommen.

Gehe ich richtig in der Annahme, das die Klasse "class BtnPirList0Data" nur für die Berechnung des anzuzeigenden Analogwert da ist?
Wenn dann bräuchte ich diese ja für den Switch nicht. Richtig?

In der List0 werden die Geräte-spezifischen Settings gespeichert. Die Standard-List0 beinhaltet nur die MasterID. Die BtnPirList0-Klassen erweitern diese um einige Daten. Du kannst BtnPirList0Data & BtnPirList0 einfach weg lassen. Entsprechend musst Du dann auch die Device-Definition anpassen und BtnPirList0 entfernen.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire