Ankündigung

Einklappen
Keine Ankündigung bisher.

Featurewunsch: EnOcean plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #91
    ich taste mich rann :-)

    Also ich sehe im Debug etwas ankommen..
    Code:
     INFO     enocean      enocean: Base ID = 0xfffeed80 -- __init__.py:_process_packet_type_response:261
     enocean      enocean: received header with data_length = 5 / opt_length = 0x01 / type = 2 -- __init__.py:run:335
    enocean      enocean: accepted package with type = 0x02 / len = 13 / data = [0x55, 0x00, 0x05, 0x01, 0x02, 0xdb, 0x00, 0xff, 0xfe, 0xed, 0x80, 0x0a, 0x21]! -- __init__.py:run:343
     
    enocean      enocean: received header with data_length = 33 / opt_length = 0x00 / type = 2 -- __init__.py:run:335
    enocean      enocean: accepted package with type = 0x02 / len = 40 / data = [0x55, 0x00, 0x21, 0x00, 0x02, 0x26, 0x00, 0x02, 0x07, 0x01, 0x00, 0x02, 0x04, 0x02, 0x01, 0x01, 0x83, 0xfd, 0xdb, 0x45, 0x4f, 0x01, 0x03, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x43, 0x54, 0x52, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8]! -- __init__.py:run:343
    Das erste ist vermutlich das was ich unter SendeId in der Plugin.conf eingeben muss...

    die Id finde ich auch und habe diese auch eingegeben...

    mit der EEP habe ich meine Schwierigkeiten... kann ich die im Debug auslesen?

    Eltako sagt für den FT55
    ORG = 0x05
    Data_byte3 = 0x70/0x50/0x30/0x10

    dann müsste => enocean_value = 10 oder 70 oder 50 oder 30
    also ohne diese 0x ?

    also quasi die item.conf:
    Code:
     [ENOCEAN]
             type = bool
             enocean_rx_id = FEFE238E
             enocean_rx_eep = F6_02_01
             enforce_updates = true
             enocean_value = 10
    Edit:
    ich glaube das könnte helfen:
    im Debug erkennt er die ID als UNKNOWN...
    => INFO enocean unknown ID = FEFE238E -- __init__.py:_process_packet_type_radio:241

    auch die conf hab ich mal geändert.
    [ENOCEAN]
    type = bool
    enocean_id = FEFE238E
    enocean_rorg = F6_02_01
    enforce_updates = true
    enocean_value = 10


    Aber irgendwo fehlt mir was bzw. steh ich auf dem Schlauch

    Kommentar


      #92
      Hi Marian,

      in der Tat waren in der Doku noch einige nicht aktualisierte Reste aus einer früheren Version des Plugins, welche noch enocean_id, enocean_rorg und enocean_value enthielten. Diese sind nicht mehr aktuell. Ich habe dieses gerade in der Doku behoben. Außerdem habe ich ein Beispiel für Deinen Ft55 hinzugefügt.

      EEP ist für Dein Switch F6_02_03. Die enocean_rx_id = FEFE238E hast Du korrekt ausgelesen und sollte so funktionieren.

      Viel Erfolg
      Alex

      Kommentar


        #93
        Danke! Funktioniert...
        nun muss ich erstmal selbst weiter machen :-) komme dann bestimmt später noch mal mit Fragen!

        Kommentar


          #94
          So da bin ich wieder...
          Daten werden empfangen, aber manchmal meldet er 2 verschiedenen Werte, obwohl ich nur eine Taste betätigt habe...

          Also ich drücke B0 und er meldet, meine logik wird auch durch B1 getriggert...
          Code:
          2014-12-07 15:20:45,315 DEBUG    enocean      enocean: accepted package with type = 0x01 / len = 21 / data = [0x55, 0x00, 0x07, 0x07, 0x01, 0x7a, 0xf6, 0x00, 0xfe, 0xfe, 0x23, 0x8e, 0x20, 0x01, 0xff, 0xff, 0xff, 0xff, 0x58, 0x00, 0x28]! -- __init__.py:run:343
          2014-12-07 15:20:45,340 DEBUG    ENO          Item Schlafzimmer.Licht_Decke = True via Logic None None -- item.py:__update:363
          2014-12-07 15:20:45,349 INFO     enocean      enocean: radio message: choice = f6 / payload = [0x00] / sender_id = FEFE238E / status = 32 / repeat = 0 -- __init__.py:_process_packet_type_radio:216
          2014-12-07 15:20:45,356 DEBUG    Main         knx: 0.0.0 set 13/1/10 to 00 -- __init__.py:parse_telegram:181
          2014-12-07 15:20:45,377 INFO     enocean      enocean: radio message with additional info: subtelnum = 1 / dest_id = FFFFFFFF / signal = -88dBm / SecurityLevel = 0 -- __init__.py:_process_packet_type_radio:223
          2014-12-07 15:20:45,367 DEBUG    ENO          Item Schlafzimmer.Licht_Decke = False via Logic None None -- item.py:__update:363
          2014-12-07 15:20:45,399 DEBUG    enocean      enocean: Sender ID found in item list -- __init__.py:_process_packet_type_radio:226
          2014-12-07 15:20:45,388 DEBUG    Main         knx: 0.0.0 set 13/1/10 to 01 -- __init__.py:parse_telegram:181
          2014-12-07 15:20:45,413 DEBUG    enocean      enocean: processing F6_02_03: Rocker Switch, 2 Rocker -- __init__.py:_parse_eep_F6_02_03:111
          2014-12-07 15:20:45,432 INFO     enocean      enocean: radio message results = {'A1': False, 'A0': False, 'B0': False, 'B1': False} -- __init__.py:_process_packet_type_radio:233
          2014-12-07 15:20:45,427 DEBUG    Main         knx: 0.0.0 set 13/1/10 to 00 -- __init__.py:parse_telegram:181
          2014-12-07 15:20:45,443 DEBUG    enocean      Triggering ENO - by: Item source: ENO.Schlafzimmer.A0 dest: None value: False -- scheduler.py:trigger:162
          2014-12-07 15:20:45,458 DEBUG    enocean      Triggering ENO - by: Item source: ENO.Schlafzimmer.A1 dest: None value: False -- scheduler.py:trigger:162
          2014-12-07 15:20:45,461 INFO     ENO          ENOCEAN_Empfangen -- eno.py:<module>:2
          2014-12-07 15:20:45,473 DEBUG    ENO          Item Schlafzimmer.Licht_Decke = True via Logic None None -- item.py:__update:363
          2014-12-07 15:20:45,481 INFO     ENO          ENOCEAN_Empfangen -- eno.py:<module>:2
          2014-12-07 15:20:45,479 DEBUG    enocean      Item ENO.Schlafzimmer.B0 = False via EnOcean FEFE238E None -- item.py:__update:363
          2014-12-07 15:20:45,499 DEBUG    enocean      Triggering ENO - by: Item source: ENO.Schlafzimmer.B0 dest: None value: False -- scheduler.py:trigger:162
          2014-12-07 15:20:45,513 DEBUG    Main         knx: 0.0.0 set 13/1/10 to 01 -- __init__.py:parse_telegram:181
          2014-12-07 15:20:45,525 DEBUG    enocean      Triggering ENO - by: Item source: ENO.Schlafzimmer.B1 dest: None value: False -- scheduler.py:trigger:162
          2014-12-07 15:20:45,528 INFO     ENO          ENOCEAN_Empfangen -- eno.py:<module>:2
          2014-12-07 15:20:45,541 INFO     ENO          ENOCEAN_Empfangen -- eno.py:<module>:2
          Ist das ein normales Verhalten?
          Zudem suche ich noch die Funktion 5 und 6 (also beide Wippen "0" oder "I")

          Kommentar


            #95
            Nein, er wird einmal beim ein- und einmal beim ausschalten (bzw. drücken und loslassen) getriggert. Beide Male werden jeweils alle Keys (A0,AI, B0, BI) gesetzt. Das enforce_updates = true in dem Item bewirkt, dass das Item jedes Mal neu gesetzt wird, auch wenn sich der Zustand nicht verändert hat. Dies ist bei Dir der Fall.

            Gruß
            Alex

            Kommentar


              #96
              ok, also "normales" verhalten...

              Es werden also bei jedem Tastendruck alle 4 Tastenwerte gesetzt / gesendet.

              Dann muss ich nur noch die richtige Logik bauen. Vermutlich liegt mein merkwürdiges Verhalten daran :-)

              Kommentar


                #97
                Läuft :-)

                Hallo,
                nachdem ich mich nun an die ganze Sache herangetastet habe bin ich jetzt schon begeistert von diesem Plugin! Obwohl ich "nur" einen Taster derzeit nutze...

                Danke! genau das fehlte Smarthome.py!

                Mein Taster der FT55 von Eltako kann lt. Anleitung allerdings 6 Funktionen.
                Ich suche dazu noch die weiteren beiden (Beide "0" und beide "1" Wippen)

                Ist diese mit dem Plugin auch möglich?

                Gruß Marian

                Kommentar


                  #98
                  Hi Marian,

                  das klingt doch gut und freut mich zu hören .


                  Bei EEP F6_02_03 ist ein „beide Wippen gedrückt“ bzw. „beide Wippen losgelassen“ nicht direkt über die Enocean Nachricht detektierbar. In dieser Nachricht kann nur eine Zustandsänderung codiert werden. Als Workaround könntest Du zwei Items für jede Wippe anlegen und diese in einer separaten Logik auswerten.


                  Gruß
                  Alex

                  Kommentar


                    #99
                    Also ich hab jetzt mal die neue Version getestet und bin mit dem Verhalten irgendwie nicht zufrieden, mir fehlt da noch eine Konfigurationsmöglichkeit.

                    Ein normaler Taster (F6_02_02) ist damit eigentlich absolut unbrauchbar sofern man ein enforces_updates an dieser Stelle verwendet. Da mit dem Tastendruck von A0 auch A1,B0,B1,A0B0 und B0B1 aktualisiert werden ist das ziemlich fisselig. Bei anderen Geräten kann das ja wieder schon ganz anders aussehen und man braucht da die Aktualisierung aller Werte.

                    Ehrlich gesagt fällt mir im Moment da aber auch keine richtige Lösung ein, ausser ein (optionaler) Filter im Plugin.

                    Grüße
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      Hallo zusammen,
                      ich habe gerade einen Pull request von Mirko angenommen. EEP F6_02_02 unterstützt jetzt auch "Both rockers up" und "Borth rockers down", sprich A1B1 sowie A0B0 direkt aus dem Plugin.
                      Danke an Mirko für die Änderungen. Plugin und aktualisierte Doku liegen weiterhin unter:
                      https://github.com/aschwith/smarthom...master/enocean

                      Grüße
                      Alex

                      Kommentar


                        Das Kind hat jetzt nen Schalter am Bett zu kleben. Nach einem Jahr dann doch noch ne produktive Anwendung . Gerade eben die letzte Steckdose fürs Nachtlicht umgeklemmt.
                        Umgezogen? Ja! ... Fertig? Nein!
                        Baustelle 2.0 !

                        Kommentar


                          Vorgehensweise

                          Ich habe eine Beaglebone mit dem Cape und taste mich gerade an Enocean heran.

                          Ich möchte einen Alpha Eos Stellantrieb verwenden (EEP: A2_20_01) für dieses EEP habe ich ein Dokument mit den DATA BYTES gefunden. Für mich relevant wäre:


                          PHP-Code:
                          transmit mode:
                          DB1Temperature 0...40°Clinear n=0...255 Aktueller Messwert des internen Temperatursensors
                          DB_2
                          .BIT_4 Battery capacity 10%

                          receive mode:
                          DB3Valve position 0...100 %, linear n=0...100
                          Temperature setpoint 0.
                          ..40°C,
                          linear n0...255

                          DB_1
                          .BIT_5 Open valve

                          DB_1
                          .BIT_4 Close valve

                          DB_1
                          .BIT_3 Summer bitreduction of energy
                          consumption

                          DB_1
                          .BIT_2 Setpoint selection DB_3
                          0b0 set point 0.
                          ..100 %,
                          0b1 temperature set point 0...40° 
                          Ich bin jetzt so weit gekommen, dass das Plugin läuft, er im Log ein Enocean Device erkennt:

                          PHP-Code:
                          2015-01-31 01:09:45,353 DEBUG    enocean      enoceanreceived header with data_length 10 opt_length 0x07 type -- __init__.py:run:337
                          2015
                          -01-31 01:09:45,356 DEBUG    enocean      enoceanaccepted package with type 0x01 len 24 data = [0x550x000x0a0x070x010xeb0xa50x800x080x340x800x010x880x930x490x000x010xff0xff0xff0xff0x310x000xe1]! -- __init__.py:run:345
                          2015
                          -01-31 01:09:45,359 INFO     enocean      enoceanradio messagechoice a5 payload = [0x800x080x340x80] / sender_id 01889349 status -- __init__.py:_process_packet_type_radio:228
                          2015
                          -01-31 01:09:45,361 INFO     enocean      enoceanradio message with additional infosubtelnum dest_id FFFFFFFF signal = -49dBm SecurityLevel -- __init__.py:_process_packet_type_radio:235
                          2015
                          -01-31 01:09:45,364 INFO     enocean      unknown ID 01889349 -- __init__.py:_process_packet_type_radio:253 
                          nun wollte ich noch folgende Schritte gehen:
                          1. items in enocean.conf anlegen:
                          PHP-Code:
                          [Enocean]
                              [[
                          auffahren]]  
                              
                          type bool
                              enforce_updates 
                          true
                              enocean_id 
                          01:88:93:49
                              enocean_rorg 
                          A5_20_01
                              enocean_value 
                          auffahren

                              
                          [[Temp_ist]]
                              
                          type num
                              enforce_updates 
                          true
                              enocean_id 
                          01:88:93:49
                              enocean_rorg 
                          A5_20_01
                              enocean_value 
                          temp 
                          1. Problem: Im Log bleibt das Device "unknown". Ich habe es bei Device ID auch ohne Doppelpunkte versucht, gleiches Ergebnis.

                          2. im Plugin die Rorg und die Datenpunkte hinterlegen (heir stehe ich etwas auf dem Schlauch, da ich nicht verstehe wie ich die Data Bytes übersetzen muss):
                          PHP-Code:
                              def _parse_eep_A2_20_01(selfpayload):
                                  
                          logger.debug("enocean: processing A2_20_01")

                                  
                          results['temp'] = "hier muss etwas hin, dass den Temperaturwert abgreift" # -> laut Dokumentation ist der Wert "DB1" 
                          results['auffahren'] = "hier muss etwas hin, dass dem Aktor den Befehlt zum auffahren des ANtriebs sendet" # DB_1.BIT_5
                                  
                          return results 
                          ist meine Denkweise generell korrekt?
                          Muss zum Senden auch mit "results" gearbeitet werden?
                          Muss ich den Aktor vorher noch anlernen über sh.enocean.send_learn("NUMMER"), ändert sich die ID dann so:
                          PHP-Code:
                              enocean_id 01889349+NUMMER 
                          -> bei Nummer 3
                          enocean_id 01889352
                          oder
                          :
                          enocean_id 01:88:93:52 

                          Kommentar


                            Zitat von Marcov Beitrag anzeigen
                            1. items in enocean.conf anlegen:
                            Code:
                            [Enocean]
                                [[auffahren]]  
                                type = bool
                                enforce_updates = true
                                enocean_id = 01:88:93:49
                                enocean_rorg = [B][I][COLOR=Red]A5[/COLOR][/I][/B]_20_01
                                enocean_value = auffahren
                            
                            [...]
                            1. Problem: Im Log bleibt das Device "unknown". Ich habe es bei Device ID auch ohne Doppelpunkte versucht, gleiches Ergebnis.

                            2. im Plugin die Rorg und die Datenpunkte hinterlegen (heir stehe ich etwas auf dem Schlauch, da ich nicht verstehe wie ich die Data Bytes übersetzen muss):
                            Code:
                                def _parse_eep_[B][I][COLOR=Red]A2[/COLOR][/I][/B]_20_01(self, payload):
                                    logger.debug("enocean: processing A2_20_01")
                            
                                    results['temp'] = "hier muss etwas hin, dass den Temperaturwert abgreift" # -> laut Dokumentation ist der Wert "DB1" 
                            results['auffahren'] = "hier muss etwas hin, dass dem Aktor den Befehlt zum auffahren des ANtriebs sendet" # DB_1.BIT_5
                                    return results
                            ist meine Denkweise generell korrekt?
                            Hallo Marco,

                            schön dass du dich bis hierher vorgearbeitet hast. Du hängst hier an einem Flüchtigkeitsfehler! Rot markiert von mir: Schreibfelher in der Parse-Funktion. Beim Einlesen der Enocean-Items ist das neue Plugin so angelegt, dass es alle Items mit nicht-existenten Parse-Funktionen ablehnt:
                            Code:
                                        rx_key = item.conf['enocean_rx_key'].upper()
                                        rx_eep = eep_item.conf['enocean_rx_eep'].upper()
                                        rx_id = int(id_item.conf['enocean_rx_id'],16)
                                        
                                        # check if there is a function to parse payload
                                        [B][COLOR=Red]if not callable(getattr(self, "_parse_eep_" + rx_eep, None)):
                                            logger.error("enocean: item {} misses parser for eep {}".format(item, rx_eep))[/COLOR][/B]
                                            return None

                            Dieser Fehler steht bei dir auch sicher im Log!


                            Wenn du den Typo korrigierst, prüfen ob:
                            - Item jetzt beim Start übernommen wird!
                            - Bei Empfang passende Funktion aufgerufen wird.

                            Die Doku zum Zerlegen der Bytes hast du ja schon mal. Lass dich von den anderen Parse-Funktionen inspirieren.

                            Viele Grüße und Erfolg
                            Robert

                            Kommentar


                              Hi Robert,

                              vielen Dank für Deine Hilfe, den Fehler hatte ich nicht im Log, ich schätze es liegt daran, dass die ID immer unknown bleibt. Muss ich in der ID Doppelpunkte einügen?

                              egal ob ich es so:

                              PHP-Code:
                                      enocean_id 01889349 
                              oder so:
                              PHP-Code:
                                      enocean_id 01:88:93:49 
                              im Item definiere, im Log erscheint:
                              PHP-Code:
                              015-01-31 11:12:59,273 INFO     enocean      unknown ID 01889349 -- __init__.py:_process_packet_type_radio:251 
                              Die Doku zum Zerlegen der Bytes hast du ja schon mal. Lass dich von den anderen Parse-Funktionen inspirieren.
                              Sorry, aber wo finde ich die Doku?

                              Kommentar


                                Hast du den Schreibfehler korrigiert?

                                Doppelpunkte: nein, ohne funktioniert sicher - da ist evtl. ein Fehler in der Doku.

                                Kommentar

                                Lädt...
                                X