FHEM+Arduino Firmata via Ethernet+RF 433 Mhz Sender+Baumarkt-Funksteckdosen

Begonnen von blueberry63, 08 April 2014, 16:16:31

Vorheriges Thema - Nächstes Thema

Bastelbernd

@blueberry63,
das ist keine FB sondern ein Bewegungsmelder  ;)
http://www.ebay.de/itm/200973333723?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Meine Fernbedienung oder der Bewegungsmelder senden immer dieselben Werte, lassen sich mit einem dummy und Notify prima auswerten.

Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Christian.

Zitat von: blueberry63 am 24 Mai 2014, 15:06:37
Meine 1. Tests ergeben, daß das mehrmalige Drücken derselben Taste an der Pollin-FB unterschiedliche Werte für "Tristatecode" und "Value" in FHEM bringen. Hat jemand eine Erklärung dafür?

Schau Dir mal genau an, inwieweit sich die Werte unterscheiden. Bei mir sind bei den letzten paar Signalen die letzten 2-3 Stellen falsch. Da vorher aber oft genug das richtige Signal empfangen wurde, sollte das kein Problem darstellen.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

blueberry63

Ich habe inzwischen rausgefunden, daß die Werte für dieselbe Taste der FB nur verschieden sind, wenn man schnell hintereinander drückt. Läßt man einige Sekunden Pause zwischen dem Drücken der Taste, sind die Werte zuverlässig immer gleich (?!).

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Sid-L

Zitat von: Christian. am 23 Mai 2014, 21:51:44
Das liest sich, als würde die Funktion AssignIoPort() in der fhem.pl bei Dir weniger Argumente verlangen als bei mir. Hast Du möglicherweise eine ältere Version von FHEM? Ich habe gegen die aktuelle Entwicklungsversion entwickelt, auf die Du mit update development aktualisieren kannst.

Das wars, funktioniert, vielen Dank!

blueberry63

Hallo,

nachdem der Empfang von Signalen einer Fernbedienung nun auch funtioniert, wollte ich Euch kurz meine Lösung für einen virtuellen Alarm-Schalter vorstellen. Das Besondere ist eigentlich nur, daß ich das mehrfache Triggern verhindere. Ich habe nämlich festgestellt, daß die FB die Signale mehrfach sendet, obwohl die Taste nur einmal gedrückt worden ist.

Zusatz-Feature, die ich hier nicht naeher beschreibe: kurzes Klingeln meiner Fritzbox+EMail zur Bestaetigung, daß die Aktion erfolgreich war.


# Der Arduino
define ARD433 FRM 3030 global

# Das Empfangsteil an PIN D2
define EMPF433 FRM_RCIN 2
attr EMPF433 IODev ARD433

# Dummy gegen Mehrfach-Trigger
define d_empf433 dummy

# Dummy Alarm
define Alarm dummy
attr Alarm eventMap 0:AUS 1:EIN
attr Alarm setList 0 1
attr Alarm webCmd 0:1

# Das Notify schaltet den Alarm EIN/AUS
# Filter mit "21", da mein Code auf der FB mit "21" anfaengt

define n_AlarmFB notify EMPF433:.*21.* { \
  if (ReadingsVal("EMPF433","value","0") == 21855) { \
    if (ReadingsVal("d_empf433","state","") ne "on") { \
      fhem ("set d_empf433 on");; \
      fhem ("define a1 at +00:00:10 set d_empf433 off");; \
      fhem ("set Alarm EIN");; \
      {FBCallr(1,620,6,'192.168.xxx.xxx')};; \
      {DebianMail('aaaa@@bbbbb.de','Alarm','Alarm=EIN')};; \
    };; \
  };; \
  if (ReadingsVal("EMPF433","value","0") == 21780) { \
    if (ReadingsVal("d_empf433","state","") ne "on") { \
      fhem ("set d_empf433 on");; \
      fhem ("define a1 at +00:00:10 set d_empf433 off");; \
      fhem ("set Alarm AUS");; \
      {FBCallr(1,620,6,'192.168.xxx.xxx')};; \
      {DebianMail('aaaa@@bbbbb.de','Alarm','Alarm=AUS')};; \
    };; \
  };; \
}
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

blueberry63

@Christian, Norbert:

Wie geht es denn eigentlich mit dieser Entwicklung weiter? Die Lösung ist für mich perfekt und ich kann mit diesem Stand sehr gut leben. Aber ich habe gesehen, daß ja Änderungen in "10_FRM.pm" nötig waren und da frage ich mich natürlich, wie es zusammenpaßt, wenn dieses Modul ein Update erfährt.

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Christian.

Ich würde die Änderungen gern in Firmata und FHEM integrieren und habe wie von Norbert vorgeschlagen entsprechende Pull-Requests auf GitHub erstellt.

Meine Module 20_FRM_RC* benötigen Änderungen an 10_FRM (liegt bei Norbert). 10_FRM benötigt Änderungen an der Perl-Firmata-Implementierung (liegt auch bei Norbert). Die wiederum setzt auf Firmata auf (das machen glaube ich Jeff Hoefs und Norbert). Ich habe alle Änderungen eingereicht und warte auf Feedback. Es ist wohl noch nicht so ganz raus, ob man alles wie von mir vorgeschlagen übernehmen kann.

Du hast Recht, dass weitere Änderungen an einer der beteiligten Komponenten zu Konflikten führen können.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

ntruchsess

Hallo Christian,

wie Du weißt ist das Problem ja, dass Dein Feature von der RCSwitch-library abhängig ist, was ja leider dazu führt, dass die ConfigurableFirmata gar nicht mehr compiliert, wenn der Benutzer die Library nicht installiert hat. (Liegt daran, dass die Arduino-IDE alles compiliert, was in utility zu finden ist, da hilft auch ein auskommentieren im Sketch nichts). Du wolltest deshalb das Feature als Example zur Configurable-firmata beisteuern, was aber auch impliziert, dass ich es nicht in den perl-firmata-core (so wie die perl-firmata aktuell gestrickt ist) aufnehmen würde und man den betreffenden code ins fhem-modul verschieben müsste. Wie weit bist Du damit gekommen?

Alternativ bräuchte man halt ein Konzept, wie man in der Configurable-Firmata mit Abhängigkeiten zu Fremdlibraries umgehen sollte (z.B. conditionales compilieren der Features, gesteuert über ein zu includierendes header-file oder so was...), dann könnte ich den pull-request für perl-firmata und FRM einfach so übernehmen. Ich habe leider aktuell wenig Zeit da selber was auszuarbeiten (reale Baustelle vor dem Haus...), über funktionierende Lösungsvorschläge würde ich mich freuen.

Gruß,

Norbert
while (!asleep()) {sheep++};

blueberry63

@Bernd

Zitatdas ist keine FB sondern ein Bewegungsmelder

Ich habe mir gestern auch so ein Teil bestellt. Könntest Du mir Deine Implementierung schicken/posten?

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Bastelbernd

Hallo Blueberry63,

habe das erst einmal mit einem dummy  und notify gelöst
define Pir1 dummy
attr Pir1 room IT
define p1 notify rc_empf {if( ReadingsVal("rc_empf","value",0)== 8898060){fhem("setreading Pir1 state on ");;{fhem("define Pir1_aus at +00:01:00 setreading Pir1 state off")}}}
attr p1 room IT


besser währe natürlich ein Modul dafür  :D

Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Christian.

Zitat von: ntruchsess am 04 Juni 2014, 09:53:35
Du wolltest deshalb das Feature als Example zur Configurable-firmata beisteuern, was aber auch impliziert, dass ich es nicht in den perl-firmata-core (so wie die perl-firmata aktuell gestrickt ist) aufnehmen würde und man den betreffenden code ins fhem-modul verschieben müsste. Wie weit bist Du damit gekommen?

Ich habe das so verstanden, dass dafür die Perl-Firmata zunächst so erweitert werden muss, dass keine Feature-spezifischen Funktionen mehr notwendig sind. Ich meine die packet und handle-Funktionen in Protocol.pm. Den Inhalt kann ich in die Module verschieben, aber irgendwie muss ich die Daten doch an die Perl-Firmata übergeben. Es müsste diese Funktionen in allgemeiner Form geben. Und die in Constants.pm definierten Konstanten (z.B. RC_DATA) müssen auch noch irgendwie heruntergegeben werden. Ich habe keine Idee, wie ich das bewerkstelligen soll.
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

ntruchsess

Um Sysex-messages zu versenden, habe ich Dir gerade eine methode 'sysex_send' in Platform.pm ingebaut.

Empfangen von Sysex-messages geht analog zum DHT-11-example.

Da man nur einen sysex-observer registrieren kann, muss der natürlich ins FRM.pm und die empfangenen Messages an das RC_FRM-submodul (und ggf. später an noch kommende 'non-standard'-Firmata-module) dispatchen. Ich denke da z.B. an Ultraschall-distanzmessung oder DHT11.

Die Konstanten können erst mal im FRM.pm definiert sein, die sind ja noch kein 'Firmata-standard'.

Gruß,

Norbert
while (!asleep()) {sheep++};

Christian.

Danke Norbert, das sehe ich mir an. Ich habe aber gemerkt, dass ich erstmal meine Git-Kenntnisse verbessern muss - ich habe es noch nicht geschafft, meine und Deine Änderungen in einem Branch zusammenzuführen. Soll ich die Änderungen in den bestehenden Pull-Request committen oder einen neuen erstellen?
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee

blueberry63

UPDATE: Kommando zurück: mein UNO hatte sich wohl aufgegangen (das 1. Mal!)

Hallo,
kann es sein, daß nach dem Update von letzter Nacht hier nichts mehr geht? Ich habe auf der Arduino-Seite definitiv nichts geändert und bei FHEM eben nur das Update laufen lassen. Jetzt kann ich weder die Funksteckdosen schalten, noch bekomme ich über mein RCIN-Device Signale empfangen???

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

Christian.

Das kann ich nicht reproduzieren. Ich habe gerade ein update development fhem abgesetzt, FHEM heruntergefahren und dann RCSwitchFirmata-2014-05-22.zip entpackt. Damit kann ich genauso schalten wie zuvor.

Ideen für die Fehlersuche: Hast Du das Archiv entpackt? Sind Deine Geräte definiert? Findest Du etwas im Log? Kannst Du mit RCSwitch senden und empfangen?
Raspberry Pi 3 mit FHEM; Arduino Nano mit ConfigurableFirmata (S0-Stromzähler); nanoCUL (MAX!); SIGNALduino (RXB6, 433 MHz); eBus; RS485 & D0 (SolarView); DVB-T (Thermo-/Hygrometer); Z-Wave; ZigBee