Ankündigung

Einklappen
Keine Ankündigung bisher.

Featurewunsch: EnOcean plugin

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

    Hi Robert!

    ja den Schreibfehler hatte ich natürlich korrigiert.

    In der Doku steht:
    According to the plugin-implementation of the enocean-devices you have to specify at least a enocean-id (enocean serial number in format 01:a2:f3:2d), the correct enocean-rorg-code and an enocean-value.
    Ist es die richtige ID, oder muss ich FFFFFFFF nehmen:

    PHP-Code:
    2015-01-31 10:43:59,342 INFO     enocean      enoceanradio message with additional infosubtelnum dest_id FFFFFFFF signal = -49dBm SecurityLevel -- __init__.py:_process_packet_type_radio:233 
    sieht jetz so aus:

    enocean.conf:
    PHP-Code:
    [Enocean]
        [[
    temp]]
        
    type num
        enforce_updates 
    true
        enocean_id 
    01889349
        enocean_rorg 
    A5_20_01
        enocean_value 
    temp 
    plugin init.py:

    PHP-Code:
        def _parse_eep_A5_20_01(selfpayload):
            
    logger.debug("enocean: processing A5_20_01")
            
    results['temp'] = (payload[0]) == 0x64 # einfach irgendetwas eingesetzt
            
    return results 
    sh.Enocean.temp() liefert 0 zurück. "enocean: processing A5_20_01" erscheint nicht im Log.

    Kommentar


      - Bekommst du noch den Fehler mit "Unknown ID"?
      - logger.debug wird nur im Debug-Mode angezeigt - benutzt du den? sonst mal "logger.error" nehmen oder halt im Debug-Mode starten
      - "(payload[0]) == 0x64" KANN 0 sein - also passen!? `Was erwartest du sonst davon? Warum der Vergleich?

      SYSTEMATISCH schauen ob
      - Ob Plugin überhaupt startet (sonst Schreibweise checken und Parse-Funktion)
      - Item beim Starten akzeptiert wird!!!
      - Paket mit passendem EEP empfangen wird (Debug-Mode)
      - dann an Verarbeitung rantasten.

      P.S.: "# einfach irgendetwas eingesetzt" wirkt auf den Leser nicht nach intensivem Überlegen...

      Kommentar


        der Fehler lag in dem Item, ich habe es jetzt nach dieser Anleitung gemacht:

        https://github.com/aschwith/smarthom...master/enocean

        und die enocean.conf sieht nun so aus:

        PHP-Code:
        [Enocean]
            [[
        alpha]]
                    
        enocean_rx_id 01889349
                    enocean_rx_eep 
        A5_20_01
                    enforce_updates 
        true
                    
        [[[temp]]]
                        
        type num
                        enocean_rx_key 
        temp
                        visu_acl 
        rw   
                        enforce_updates 
        true 
        nun erscheint im DEBUG log auch:
        PHP-Code:
        2015-01-31 12:53:59,089 INFO     enocean-startup enoceanrequesting version information -- __init__.py:_startup:308
        2015
        -01-31 12:53:59,092 DEBUG    enocean      enoceanaccepted package with type 0x01 len 24 data = [0x550x000x0a0x070x010xeb0xa50x640x900x7d0x080x010x880x930x490x000x010xff0xff0xff0xff0x360x000xec]! -- __init__.py:run:343
        2015
        -01-31 12:53:59,101 INFO     enocean      enoceanradio messagechoice a5 payload = [0x640x900x7d0x08] / sender_id 01889349 status -- __init__.py:_process_packet_type_radio:226
        2015
        -01-31 12:53:59,105 INFO     enocean      enoceanradio message with additional infosubtelnum dest_id FFFFFFFF signal = -54dBm SecurityLevel -- __init__.py:_process_packet_type_radio:233
        2015
        -01-31 12:53:59,107 DEBUG    enocean      enoceanSender ID found in item list -- __init__.py:_process_packet_type_radio:236
        2015
        -01-31 12:53:59,109 DEBUG    enocean      enoceanprocessing A5_20_01 -- __init__.py:_parse_eep_A5_20_01:115 
        da ich die Doku für den Parser nicht finde, habe ich das erst mal liegen gelassen und irgendetwas eingetragen, da ich zunächst das Problem mit der Sender ID lösen wollte.

        Hast Du noch einen Tipp wo ich infos zum Parser finde?

        Ist die in der oben verlinkten Doku angegebene Vorgehensweise mit
        dem anlernen noch aktuell:
        Learning Mode: For some enocean devices it is important to teach in the enocean stick first. In order to send a special learning message, start smarthome with the interactive console: ./smarthome.py -i Then use the following command:
        sh.enocean.send_learn(ID_Offset)
        liefert bei mir:


        PHP-Code:
        >>> sh.enocean.send_learn(0)
        Traceback (most recent call last):
          
        File "<console>"line 1in <module>
        TypeErrorsend_learn() takes exactly 1 positional argument (2 given

        danke

        Kommentar


          Ich habe jetzt die letzten Änderungen von Alexander ins offizielle develop übernommen. Er hatte wie du schon festgestellt hast die Doku auch verbessert. In der alten Version fehlten noch das "rx_".

          Zu den Parsern gibt es keine besondere Doku. Den Rumpf hast du ja auch schon fertig. Der Rest ist minimales Python und die von dir ja schon gefundene Ausschlüsselung des EEP.

          enocean: radio message: choice = a5 / payload = [0x80, 0x08, 0x34, 0x80]

          Verrät mir: 0x80/255*40.0 = 20°C
          0x08 = Batterie ok (>10%)

          Ergo:
          Code:
          return {'temp': payload[0]/255.0*40.0, 'battery_ok': payload[1] & 0x08}
          Tippfehler vorbehalten. Wenn es bei dir funktioniert sag bitte Bescheid damit wir das ins Plugin übernehmen können.

          Einlernen: Musst du Alexander fragen/auf sein Feedback warten. Die Anlernfunktionalität ist von ihm.

          Grüße
          Robert

          Kommentar


            Der Temperaturwert schein nicht zu stimmen (bleibt seit über 10 Minnuten konstant, obwohl der Antrieb draußen liegt).

            Ich verstehe den Zusammenhang der Data Bytes / Bits und Payloads nicht. Ich habe ja die Dokumentation, weiß aber nicht, wie ich das übersetze.

            Beispiel:
            Ventilpostion ist Date Byte 3, kann ich diesen Wert dann mit Payload[3] abfragen?

            Dann müsste Payload[1] der Temperaturwert (/255*40) sein

            Batterriekapaziätät ist Data Byte 2 / BIT 4, wie wird dieser Wert dann abgefragt?

            Kommentar


              - Ändert sich denn wenn du den Antrieb in verschieden warme Umgebungen bringst irgend ein Wert des Payloads?

              - Ich übersetze mir das RX und TX deiner Anleitung so, dass zum einen der Antrieb sendet (eben Batteriezustand und gemessene Temperatur) und im andern Fall DU dem Antrieb neue Werte gibst (Sommerabsenkung, Temperatur ODER Stellwert, etc.). Sprich du musst analog zum Parser noch ein Sendetelegramm zusammenklöppeln.

              Kommentar


                - also die Werte ändern sich auch nach 2 Stunden vor dem Fenster nicht, meiner Meinung nach muss der Aktor erst angelernt sein, bevor er Werte versendet. Wenn ich den Anlernvorgang auslöse ändern sich Werte.
                Leider funktioniert der Befehl
                PHP-Code:
                sh.enocean.send_learn(ID_Offset
                bei

                PHP-Code:
                sh.enocean.send_learn() 
                sehe ich im Log, das er einen Anlernbefehl sendet, allerdinngs interessiert sich der Aktor dafür nicht besonders.

                Im grunde genommen muss ich auch nichts von der Kiste empfangen, es reicht mir, wenn ich ihm Stellbefehle geben kann. Aber ich denke der erste Schritt ist es, Daten zu empfangen.

                Kommentar


                  Also der Output bleibt immer:

                  PHP-Code:
                  enoceanradio messagechoice a5 payload = [0x640x900x3a0x08
                  nur wenn ich den Anlernknopf drücke ändert es sich auf:

                  PHP-Code:
                  enoceanradio messagechoice a5 payload = [0x800x080x340x80
                  sobald dieser beendet ist, erscheinen wieder die Werte wie oben...

                  Meiner Meinung nach muss die Kiste erst angelernt sein, damit sie die richtigen Daten sendet.

                  Kommentar


                    Hallo zusammen,

                    danke Dir Robert für's Mergen. Ich habe noch nicht rausgefunden, wie man über das GIT Webinterface die Änderungen vom eigenen Repo in das Geforkte bekommt. Sobald ich das hinbekomme, stelle ich direkt pull requests

                    Ich lade heute Abend oder morgen früh eine aktualisierte Version mit EEP A5_20_01 zum Testen in mein GIT Repository hoch. Dabei geht es erstmal rein um das Empfangen und Dekodieren von Statusmeldungen, die vom Aktor kommen. Das Senden ist noch nicht implementiert.
                    Es würde mich sehr wundern, wenn der Aktor zum Senden von Statusmeldungen erst angelernt werden müsste. Dies ist normalerweise erst zum Senden von Kommandos (Von Software zum Heizungsaktor nötig). Das Anlernen ist in der Doku beschrieben. Da sich die Anlerntelegramme je nach Hardware unterscheiden, gibt es mittlerweile zwei verschiedene Anlernfunktionen für Switches und Dimmer. Falls wir rausfinden, was der Heizungsaktor als Telegramm benötigt, können wir das mit aufnehmen.
                    Viele Grüße
                    Alex

                    Kommentar


                      vielen Dank - in FHEM kann man den Aktor anscheinend anlernen. Ich frage dort mal nach, wie sie die Anlernprozedur dort durchführen.

                      Kommentar


                        Im FHEM Forum hat mir freundlicherweise direkt geantwortet, sie lernen den Aktor mit folgender Methode an (https://www.enocean.com/fileadmin/re...6.2_public.pdf -> seite 174)

                        Angehängte Dateien

                        Kommentar


                          Hallo Marcov,

                          ich habe zum Testen ein generisches Anlernkommando "send_learn_telegram" eingebaut, bei dem man explizit beliebige Rorg, Function, Type und Variation (gemäß Enocean EEP) übergeben kann. Probier's mal aus.
                          Achtung: Alle Argumente werden als Dezimalzahl angegeben, z.B. Rorg 0xA5 = 165 dezimal.

                          Gruß
                          Alex

                          Kommentar


                            Hallo, vielen Dank für Deinen Einsatz. Ich muss es mir mal in Ruhe anschauen, mir fehlt noch grundlegendes Verständnis um die Arbeitsweise des Plugins und die Kommunikation zu verstehen. Ich versuche mich am WE mal einzuarbeiten.

                            Kommentar


                              Ich habe gerade mal wieder ein größeres Update ins develop geschoben:
                              • Ausgliederung des EEP-Parsers in eine eigene Datei (einfach um eine bessere Übersicht zu haben bei immer mehr unterstützen EEP)
                                • Der Parse kann jetzt weniger kryptisch über "Parse" angesprochen werden, die Abfrage ob eine passende Dekodierung vorliegt über "CanParse".
                              • Alle Temperatur-Sensoren von A5_02_xx werden jetzt unterstützt
                              • Für den 2-Rocker habe ich die parse-Routine aufgemöbelt und entsprechend der EEP korrigiert, was aber auch bedeutet:
                                • A0 (null) wurde AO (Ooooh) etc. - entsprechend der EEP - die alte Benennung mit Nummern wird noch unterstützt, der Benutzer wird beim Einlesen aber gewarnt
                                • A0B0 gibt es nicht mehr, da bei korrekter Dekodierung einfach "A0" und "BO" auf true/false gesetzt werden (auch entsprechend EEP) - wer das alte Verhalten zwingend benötigt muss also "AO" und "BO" per eval in einem weiteren Item verknüpfen (eval_trigger = Items / eval = and)
                              • kleinere Fixes
                                • Fehlermeldungen bzgl. den Config-Tags nachgeführt, z.B. enocean_rx_key statt enocean_key um neuen Users gleich die richtigen Tags zu verraten
                                • README nachgezogen
                                • Tippfehler

                              @aschwith: bitte wenn möglich ein rebase!

                              Kommentar


                                Hallo Kollegen,

                                ich wollte hier nur kurz ein großes Dankeschön an alle Mitwirkenden aussprechen. Ich konnte nach anfänglichen Schwierigkeiten (eher Verständnisprobleme meinerseits, wie komme ich an die IDs etc.) letztlich doch innerhalb kurzer Zeit erfolgreich einen Hoppe SecuSignal Fenstergriff anbinden.

                                Vielen Dank für das Plugin!
                                Mit freundlichen Grüßen
                                Niko Will

                                Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                                - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                                Kommentar

                                Lädt...
                                X