Beiträge von gemu2015


    Als Info an alle.


    Am besten immer die original Tasmota Version nehmen. Die ist fast immer up to date.

    In meinem Fork gibt es auch mal unstabile Versionen.

    Heisst schon lange xsns_53_sml.ino

    Hi,

    Problem ist gelöst!

    War ein Fehler der schon immer drin war aber sich nicht bei jeder Konfiguration ausgewirkt hat. Ich konnte den bisher nicht reproduzieren.

    Dank AingTii konnte ich dann doch den Fehler nachvollziehen und finden.

    Versuch mal meine neueste Version auf Github.


    Oder noch einfacher setzte einfach eine -1 hinter die Zählerdefinition.


    also z.B. statt

    +1,3,o,0,9600,STROM


    nimm


    +1,3,o,0,9600,STROM,-1


    must du im Quelltext machen. kannst du ruhig auf 96 setzen, kostet halt RAM sollte aber kein Problem sein.

    denke eigentlich nicht dass das bei SML an der Länge liegen sollte, einen Versuch ist es aber wert.

    Warum aber der Median bei dir keine Wirkung zeigt kann ich nicht verstehen.


    Gruß


    Gerhard

    HI,


    mit den 16 wird ein Median aus 5 Werten berechnet. das sollte einzelne Ausreisser immer eliminieren. Mittelwerte machen bei Ausreissern keinen Sinn.

    Was ich noch nie bei einem Zähler gesehen hatte ist der extreme Teilfaktor von 100000000. Aber da das double float ist sollte es daran nicht liegen.

    Das heisst aber dass deine Strings wohl sehr lang sind. Eventuell gibt es einen Puffer Überlauf.

    Setzt mal die Puffergröße herauf.


    das ist der default, kannst du im Treiber editieren bzw grösser wählen.

    #define SML_BSIZ 48

    habe gerade mit einem anderen User das SUPPORT_MQTT_EVENT Problem geklärt.


    den Publish must du mit +> abschicken (recursion allowed)


    >S

    if mqttc>0

    then

    +>Subscribe soll, cmnd/%topic%,SOLLWERT

    endif


    dann gab es noch einen möglichen Überlauf des Subscribe Dekoders


    den kann man jetzt mit mehr Kapazität versehen in user_config


    z.B.


    #define MQTT_EVENT_MSIZE 450

    #define MQTT_EVENT_JSIZE 2000


    default sind 256 und 400

    Das hatte ich gemacht, er bringt auch die Meldung das er das Thema abonniert. Es kommt aber immer {"Command":"Unknown"} wenn ich ein cmnd abonniere, bei stat bringt er nichts im Log.

    Da du ja der Entwickler bist und sagst es geht, muss ich mal weiter testen. ;)


    erinnere mich gerade wo damals ein Problem lag.

    der subscribe wird in der >B section nach dem Neustart nicht ausgeführt da MQTT noch nicht verbunden ist.

    gib mal zum Testen den subscribe über die Konsole ein wenn MQTT verbunden ist dann sollte es gehen.


    im script haben wir das subscribe dann so gemacht:


    >S

    if mqttc>0

    then

    =>Subscribe soll, cmnd/%topic%,SOLLWERT

    endif

    das mit subscribe geht auch, dann wird der Wert direkt überschrieben.

    Must du aber erst kompilieren mit #define SUPPORT_MQTT_EVENT.


    hattest du ja oben schon versucht. habe ich lange nicht verwendet hat aber immer funktioniert

    Hi fanavity


    Habe dein Script getestet (hab natürlich nicht deinen Zähler)

    kein Unterschied ob M 1 oder M 2 die Anforderung wird immer gesendet.

    Allerdings ist mir aufgefallen dass du über Pin 12 sendest. Falls du aber einen 7E1 Zähler hast (wie die meisten OBIS Zähler) geht das nur über Pin 3

    also Hardware serial. (TX)


    Leider kann ich ohne den passenden Zähler nicht mehr testen


    Gruß Gerhard

    Hallo

    Bei Gesamtenergie machen negative Werte gar keinen Sinn!

    Nur bei aktueller Wirkleistung ist das sinnvoll und funktioniert bei den meisten Zählern auch problemlos (z.B. bei meinem Zweirichtungszähler EHZ363)

    Dein Zähler gibt laut Datenblatt bei aktueller Wirkleistung nur den Betrag aus, also auch nur positive Werte.


    Gruß Gerhard



    Pos

    OBIS-T-Kennzahl

    Bezeichnung

    OBIS Kenn- zahl

    Ein- richtungs- zähler
    +A

    Ein- richtungs- zähler
    -A

     

    Zwei- richtungs- zähler
    +A / -A

    Saldie- render Zähler

     

    1

    81 81 C7 82 03 FF

    Hersteller

     

    X

    X

       

    X

    X

       

    2

    01 00 00 00 09 FF

    Gerätenum mer

    0.0.9

    X

    X

     

    X

    X

     

    3

    01 00 01 08 00 FF

    Zählwerk pos. Wirkenergie, tariflos

    1.8.0

    X

    X

    4

    01 00 02 08 00 FF

    Zählwerk neg. Wirkenergie,

    tariflos

    2.8.0

    X

    X

    X

    5

    01 00 01 08 01 FF

    Zählwerk pos. Wirkenergie, Tarif 1

    1.8.1

    X

    X

    6

    01 00 02 08 01 FF

    Zählwerk neg. Wirkenergie, Tarif 1

    2.8.1

    X

    X

    X

    7

    01 00 01 08 02 FF

    Zählwerk pos. Wirkenergie, Tarif 2

    1.8.2

    X

    8

    01 00 0F 07 00 FF

    Aktuelle pos. Wirkleistung Betrag

     

    15.7.0

    X

    X

     

    X

    X

     

    9

    01 00 01 11 00 FF

    Signierter Zählerstand (nur im EDL40- Modus)

    1.17.0

    X

    X

    10

    81 81 C7 82 05 FF

    Public Key

     

    X

    X

       

    X

    X

       

    Hallo Jens,


    >T wird immer alle Teleperiod Sekunden aufgerufen.

    Der Fehler war dass ein Leerzeichen vor der geschweiften Klammer gebraucht wird.


    if temp>=max {

    -> power1

    }

    if temp<=min {

    -> power1 1

    }


    werde mal untersuchen ob man das ändern kann.


    eine script Variable kannst du mit =>publish ... an den broker senden

    oder aber in der >J Sektion eintragen.


    die Unit eines Datenpunktes wird nicht übertragen. (ist bei den meisten Variablen nicht im JSON enthalten)


    nur z.B. bei wenigen wie der Temperatur wird die Variable TempUnit zusätzlich gesendet und ergibt aber eine extra Variable im Broker.


    Es gibt in IObroker bei vordefinierten Variablen aber ein Default unit. Diese vordefinierten Variablen sind in der Datei datapoints.js enthalten.

    diese Datei kannst du editieren und z.B. die Luftfeuchtigkeit mit Unit vordefinieren.


    Wenn IObroker eine JSON Variable in dieser Liste nicht findet wird automatisch (wenn die Häkchen im Setup gesetzt sind) eine Variable diese Namens angelegt aber ohne Unit.


    Gruß Gerhard

    über Sektion >E kommen 2 Tasmota calls herein.


    FUNC_SET_POWER (kein MQTT JSON)

    FUNC_RULES_PROCESS (MQTT JSON)


    bei Dimmer xx werden beide Calls aktiviert wenn sich dabei POWER ändert, >E wird also 2 mal aufgerufen.


    Habe jetzt die Option eingebaut beide getrennt zu verarbeiten (#define SCRIPT_POWER_SECTION)

    FUNC_SET_POWER >P

    FUNC_RULES_PROCESS >E