Tasmota Script: COS()-Funktion

Hallo Community, die Fehler der letzten Tage wurden hoffentlich behoben. Entschuldigt den Umstand! Viel Spaß weiterhin. Lg
  • Hallo!

    Stromzähler-IR-Lesekopf und Tasmota Script: Berechnung der Leistung pro Phase - um das zu können benötige ich die cos()-Funktion.

    Leider zeigt er mir nur falsche Daten an.

    Ich hab die Bin schon erweitert um:

    #define USE_ANGLE_FUNC
    #define SUPPORT_MATH
    .... hat nichts gebracht


    füge ich nun:

    #define USE_EXPRESSION
    hinzu, werden stumpf sensorwerte nicht mehr angezeigt. Warum auch immer.

    Mache ich einen Fehler, geht es nicht, oder brauche ich andere BIN-defines?


    >D 124
    g:v_watt=0

    v_bez=0
    v_eins=0

    v_v1=0
    v_v2=0
    v_v3=0

    v_i1=0
    v_i2=0
    v_i3=0

    v_phi1=0
    v_phi2=0
    v_phi3=0

    v_p1_calc=0
    v_p2_calc=0
    v_p3_calc=0

    v_p_sum=0

    v_p1_real=0
    v_p2_real=0
    v_p3_real=0

    v_frq=0

    >B
    dp(1 3)


    >M 1
    +1,3,s,0,9600,SML
    1,77070100010800ff@1000,Total consumption,kWh,Total_in,4
    1,77070100020800ff@1000,Total Feed,kWh,Total_out,4
    1,77070100100700ff@1,Current consumption,W,Power_curr,2
    1,77070100200700ff@1,Voltage L1,V,Volt_p1,1
    1,77070100340700ff@1,Voltage L2,V,Volt_p2,1
    1,77070100480700ff@1,Voltage L3,V,Volt_p3,1
    1,770701001f0700ff@1,Amperage L1,A,Amperage_p1,1
    1,77070100330700ff@1,Amperage L2,A,Amperage_p2,1
    1,77070100470700ff@1,Amperage L3,A,Amperage_p3,1
    1,77070100510704ff@1,Phaseangle I-L1/U-L1,deg,phase_angle_p1,1
    1,7707010051070fff@1,Phaseangle I-L27I-L2,deg,phase_angle_p2,1
    1,7707010051071aff@1,Phaseangle I-L3/I-L3,deg,phase_angle_p3,1
    1,770701000e0700ff@1,Frequency,Hz,frequency,0
    #

    >S
    if (upsecs%3==0) {
    ; Zuweisung ueber verifizierte Indizes
    v_bez = sml[1]
    v_eins= sml[2]
    v_watt = sml[3]
    v_v1 = sml[4]
    v_v2 = sml[5]
    v_v3 = sml[6]
    v_i1 = sml[7]
    v_i2 = sml[8]
    v_i3 = sml[9]
    v_phi1 = sml[10]
    v_phi2 = sml[11]
    v_phi3 = sml[12]
    v_frq = sml[13]

    v_p1_calc = v_v1 * v_i1 * cosd(v_phi1)
    v_p2_calc = v_v2 * v_i2 * cosd(v_phi2)
    v_p3_calc = v_v3 * v_i3 * cosd(v_phi3)

    v_p_sum = v_p1_calc + v_p2_calc + v_p3_calc

    if (abs(v_p_sum) > 0.1) {
    v_p1_real = v_watt * v_p1_calc / v_p_sum
    v_p2_real = v_watt * v_p2_calc / v_p_sum
    v_p3_real = v_watt * v_p3_calc / v_p_sum
    } else {
    v_p1_real = 0
    v_p2_real = 0
    v_p3_real = 0
    }
    }


    >W

    Gesamt: %v_watt% W


    -- Rechnerisch --

    L1_calc: %v_p1_calc% W

    L2_calc: %v_p2_calc% W

    L3_calc: %v_p3_calc% W


    -- Verteilt --

    L1_real: %v_p1_real% W

    L2_real: %v_p2_real% W

    L3_real: %v_p3_real% W


    Bezug {m} v_bez {m} %v_bez%
    Einsp {m} v_eins {m} %v_eins%
    Leist {m} v_watt {m} %v_watt%

    V1 {m} v_v1 {m} %v_v1%
    V2 {m} v_v2 {m} %v_v2%
    V3 {m} v_v3 {m} %v_v3%

    Amp1 {m} v_i1 {m} %v_i1%
    Amp2 {m} v_i2 {m} %v_i2%
    Amp3 {m} v_i3 {m} %v_i3%

    phi1 {m} v_phi1 {m} %v_phi1%
    phi2 {m} v_phi2 {m} %v_phi2%
    phi3 {m} v_phi3 {m} %v_phi3%

    P_kalk1 {m} v_p1_calc {m} %v_p1_calc%
    P_kalk2 {m} v_p2_calc {m} %v_p2_calc%
    P_kalk3 {m} v_p3_calc {m} %v_p3_calc%

    watt_G {m} v_p_sum {m} %v_p_sum%

    P_real1 {m} v_p1_real {m} %v_p1_real%
    P_real2 {m} v_p2_real {m} %v_p2_real%
    P_real3 {m} v_p3_real {m} %v_p3_real%

  • mea culpa, mein Fehler war woanders und hatte die KI reingebracht und mich anschließend noch weiter in die Hölle geschickt

    Fehler waren die Leerzeichen in der Formel: v_p1_calc = v_v1 * v_i1 * cos(v_phi1)

    Anschließend musste die Formel noch inhaltlich angepasst werden:

    somit richtig:
    v_p1_calc = v_v1*v_i1*cos(v_phi1*3.1415926/180)

    Einmal editiert, zuletzt von 2000ede (2. März 2026 um 20:18)