Ankündigung

Einklappen
Keine Ankündigung bisher.

"SMA Binding " für OpenHAB

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

    #16
    Zitat von eibalinchen Beitrag anzeigen
    Hi, das macht absolut Sinn,
    hätte ich aber ohne deine Hilfe und deine Vorgehensweise in der Rule so niemals hinbekommen

    Ich habe das so jetzt 1:1 übernommen und darf sagen, dass Ansicht "Tag" schon mal funktioniert. Jetzt warte ich gespannt auf die Nacht und berichte final!
    Dann ist das ein super Workaround!

    bis später...
    Es funktioniert!!!,

    @udo1toni besten Dank an dich
    eibalinchen

    Kommentar


      #17
      Hallo,

      super Beitrag, ich habe noch openhab 1.7 auf Raspberry mit KNX-Binding am laufen, besteht die Möglichkeit das die SMA-Modbus-Anbindung mit dem Modbus-Bindung von openhab 1.7 funktioniert ? Mein Wechselrichter ist ein SMA STP5.0-3AV-40 .

      Falls nicht würde openhab 2 auf einem raspberry pi 1b laufen ?

      Mfg

      Kommentar


        #18
        Nein, openHAB2 auf einem Raspberry Pi 1B laufen zu lassen ist nicht ratsam. openHAB braucht Speicher satt, selbst 1GByte (3B+) ist nicht komfortabel.

        Kommentar


          #19
          Zitat von Juergen151 Beitrag anzeigen
          Hallo,

          super Beitrag, ich habe noch openhab 1.7 auf Raspberry mit KNX-Binding am laufen, besteht die Möglichkeit das die SMA-Modbus-Anbindung mit dem Modbus-Bindung von openhab 1.7 funktioniert ? Mein Wechselrichter ist ein SMA STP5.0-3AV-40 .

          Falls nicht würde openhab 2 auf einem raspberry pi 1b laufen ?

          Mfg
          Hallo Jürgen, hat denn diese Anleitung hier https://knx-user-forum.de/forum/supp...18#post1254518 nichts gebracht?
          Das ist ja basierend auf dem 1.x er openHAB...

          Gruß André
          eibalinchen

          Kommentar


            #20
            Hi Andre, Udo,

            Danke für die Hinweise, ich habe nach deiner Anleitung installiert, momentan klappt die Installation des Bindings nicht :

            sudo apt-get install openhab-addon-binding-org.openhab.binding.modbus-1.7.0.jar

            kommt die Meldung, Mittels regulärem Ausdruck konnte kein Paket gefunden werden, das Bindung ist im Verzeichnis Addon abgelegt, in welchem Verzeichnis sollte die stehen ? (Also ich arbeite mittels Putty und WinSCP)

            Gruß Jürgen

            Kommentar


              #21
              So werden unter OH1 keine Bindings installiert

              Ich habe OH1 nie über die Paketverwaltung eingerichtet, weshalb ich nicht weiß, wie die einzelnen Bindings stattdessen zur Verfügung gestellt werden. Im Zweifel ist es am einfachsten, Du richtest das Binding manuell ein. (vielleicht ist das Repository auch gar nicht mehr vorhanden)
              Dazu lädst Du die aktuelle Fassung von
              hier: https://ci.openhab.org/job/openHAB1-...modbus/target/
              und packst die Datei in den addons-Ordner (suche nach anderen Dateien, die dem Namensmuster org.openhab.binding*.jar entsprechen, der Name des Ordners sollte eigentlich addons lauten). Du musst openHAB nicht neu starten, das addon steht sofort zur Verfügung. konfigurieren musst Du über die openhab.cfg, die Parameterliste kannst Du über die openhab-default.cfg und den passenden Abschnitt in Erfahrung bringen (ich hab immer den Abschnitt aus der einen in die andere Datei kopiert und dann angepasst)

              Kommentar


                #22
                Hallo zusammen,
                bin nun durch Zufall über dies Thema gestolpert, da hätte ich meinen Post zu SMA schon besser hier gestellt

                Ich habe nun das Modbus Binding 2.4 installiert und wollte die Items manuell konfigurieren, damit ich diese auch sichern kann.
                Leider funzt dies noch nicht, da ich falsche Werte angegeben bekomme. Der generelle Zugriffstest funktioniert und ich kann einzelne Register mit dem von SMA empfohlenen Test Tool auslesen und diese aktualisieren sich auch entsprechend des Intervalls.

                Meine Things
                Code:
                /* SMA Inverter */
                Bridge modbus:tcp:localhostTCP [ host="192.168.50.25", port=502, id=3, connectMaxTries=3, connectTimeoutMillis=2000] {
                   Bridge poller inputRegisters [ start=529, length=4, type="holding", refresh=1000] {
                   Thing data total_yield [ readStart="530", readValueType="uint32"]
                    }
                }
                Meine Items dazu
                Code:
                Number Total_yield1        "Yield: [%.1f kWh]"    <pie>    (Inverter)    { channel="modbus:data:localhostTCP:inputRegisters:total_yield:number" }
                Die Bezeichnung und Text würde ich ändern, sobald die richtigen Werte angezeigt werden ;-)

                Frage: Hat evtl. jemand das 2.x Modbus mit einem SMA Wechselrichter schon am laufen?

                Viele Grüße,
                Jörg

                Kommentar


                  #23
                  Nach suchen und probieren, kann ich die ersten Werte auslesen

                  Code:
                  Bridge modbus:tcp:smaTCP [ host="192.168.50.25", port=502, id=3, connectMaxTries=3 ] {
                      Bridge poller smaHolding1 [ start=30529, length=4, refresh=30000, type="holding" ] {
                      //30529 Gesamtertrag (Wh) [E-Total]
                      Thing data sma_totalprod_wh [ readStart="30529", readValueType="uint32", readTransform="default" ]
                      //30531 Gesamtertrag (kWh) [E-Total]
                      Thing data sma_totalprod_kwh [ readStart="30531", readValueType="uint32", readTransform="default" ]
                      //30537 Tagesertrag (kWh) [E-Total]
                      Thing data sma_dailyprod_kwh [ readStart="30537", readValueType="uint32", readTransform="default" ]
                      }
                  
                      Bridge poller smaHolding2 [ start=30775, length=20, refresh=5000, type="holding" ] {
                      //30775AC Wirkleistung über alle Phasen (W) [Pac]
                      Thing data sma_power [ readStart="30775", readValueType="uint32", readTransform="default" ]
                      }
                  }
                  Natürlich mit dem gleichen Fehler, so das ich die rule noch einbauen werde ;-)

                  Leider gehen die Werte für Firmware, Status etc nicht
                  Code:
                      Bridge poller smaHolding3 [ start=30051, length=4, refresh=30000, type="holding" ] {
                      Thing data sma_device_class [ readStart="30051", readValueType="uint32", readTransform="default" ]
                      Thing data sma_device_type [ readStart="30053", readValueType="uint32", readTransform="default" ]
                      Thing data sma_serialnumber [ readStart="30057", readValueType="uint32", readTransform="default" ]
                      Thing data sma_firmware [ readStart="30059", readValueType="uint32", readTransform="default" ]
                      Thing data sma_condition [ readStart="30201", readValueType="uint32", readTransform="default" ]
                      }

                  Kommentar


                    #24
                    Hi Jörg,
                    meine modbus.things sieht so aus:


                    Code:
                    Bridge modbus:tcp:Sunnyboy1 [ host="192.168.2.173", port=502, id=3 ] {
                    Bridge poller sma_dc1_poll [ start=30773, length=2, refresh=60000, type="holding" ] {
                    Thing data sma_dc1_data [ readStart="30773", readValueType="uint32" ]
                    }
                    Bridge poller sma_dc2_poll [ start=30961, length=2, refresh=60000, type="holding" ] {
                    Thing data sma_dc2_data [ readStart="30961", readValueType="uint32" ]
                    }
                    Bridge poller sma_wir_poll [ start=30775, length=2, refresh=60000, type="holding" ] {
                    Thing data sma_wir_data [ readStart="30775", readValueType="uint32" ]
                    }
                    Bridge poller sma_ges_poll [ start=30531, length=2, refresh=60000, type="holding" ] {
                    Thing data sma_ges_data [ readStart="30531", readValueType="uint32" ]
                    }
                    Bridge poller sma_tag_poll [ start=30537, length=2, refresh=60000, type="holding" ] {
                    Thing data sma_tag_data [ readStart="30537", readValueType="uint32" ]
                    }
                    Bridge poller sma_err_poll [ start=30213, length=2, refresh=60000, type="holding" ] {
                    Thing data sma_err_data [ readStart="30213", readValueType="uint32" ]
                    }
                    Bridge poller sma_mod_poll [ start=30053, length=2, refresh=43200000, type="holding" ] {
                    Thing data sma_mod_data [ readStart="30053", readValueType="uint32" ]
                    }
                    Bridge poller sma_iso_poll [ start=30225, length=2, refresh=43200000, type="holding" ] {
                    Thing data sma_iso_data [ readStart="30225", readValueType="uint32" ]
                    }
                    Bridge poller sma_fir_poll [ start=30061, length=2, refresh=43200000, type="holding" ] {
                    Thing data sma_fir_data [ readStart="30061", readValueType="uint32" ]
                    }
                    Bridge poller sma_ser_poll [ start=30057, length=2, refresh=43200000, type="holding" ] {
                    Thing data sma_ser_data [ readStart="30057", readValueType="uint32" ]
                    }
                    }
                    die passende Items Datei sieht so aus:

                    Code:
                    Group Solar_Chart
                    Group Solar_ACDC_Chart
                    Number CHART_PERIOD_SMA     (Solar_Chart)
                    Number SMA_DC1_ "DC-Leistung String 1: [%d W]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_dc1_poll:sma_dc1_data:number" }
                    Number SMA_DC2_ "DC-Leistung String 2: [%d W]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_dc2_poll:sma_dc2_data:number" }
                    Number SMA_Wirkleistung "Wirkleistung aktuell: [%d W]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_wir_poll:sma_wir_data:number" }
                    Number SMA_Gesamtertrag "Gesamtertrag: [%d kWh]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_ges_poll:sma_ges_data:number" }
                    Number SMA_Tagesertrag "Tagesertrag: [%d kWh]" <sunnyboy> (Solar_Chart) { channel="modbus:data:Sunnyboy1:sma_tag_poll:sma_tag_data:number" }
                    Number SMA_Error "Status Sunny Boy: [MAP(SMA.map):%s]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_err_poll:sma_err_data:number"}
                    Number SMA_Modell "Modell Sunny Boy: [%d]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_mod_poll:sma_mod_data:number" }
                    Number SMA_IsoWiderstand "Isolationswiderstand: [%d Ohm]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_iso_poll:sma_iso_data:number" }
                    Number SMA_Seriennummer "Seriennummer Sunny Boy: [%d]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_ser_poll:sma_ser_data:number" }
                    Number SMA_Firmware "Firmware Sunny Boy: [%d]" <sunnyboy> { channel="modbus:data:Sunnyboy1:sma_fir_poll:sma_fir_data:number" }
                    Number SMA_DC1_korr "DC-Leistung String 1: [%d W]" <solarplant> (Solar_Chart,Solar_ACDC_Chart)
                    Number SMA_DC2_korr "DC-Leistung String 2: [%d W]" <solarplant> (Solar_Chart,Solar_ACDC_Chart)
                    Number SMA_Wirkleistung_korr "Wirkleistung aktuell: [%d W]" <energy> (Solar_Chart,Solar_ACDC_Chart)
                    damit funktioniert es auf jeden Fall bei mir

                    Gruß André

                    eibalinchen

                    Kommentar


                      #25
                      Hallo André,

                      Wie oben geschrieben, geht es bei mir mittlerweile ebenfalls

                      Auch die Werte, mit denen ich gestern noch Probleme hatte, liefern nun Werte zurück.
                      Der Unterschied ist, dass ich Gruppen polle und übergebe, da musste ich die Länge noch etwas anpassen.

                      Meine Things
                      Code:
                      Bridge modbus:tcp:smaTCP [ host="192.168.50.25", port=502, id=3, connectMaxTries=3 ] {
                          Bridge poller smaHolding1 [ start=30051, length=10, refresh=30000, type="holding" ] {
                          Thing data sma_device_class [ readStart="30051", readValueType="uint32", readTransform="default" ]
                          Thing data sma_device_type [ readStart="30053", readValueType="uint32", readTransform="default" ]
                          Thing data sma_serialnumber [ readStart="30057", readValueType="uint32", readTransform="default" ]
                          Thing data sma_software [ readStart="30059", readValueType="uint32", readTransform="default" ]
                          }
                      
                          Bridge poller smaHolding2 [ start=40063, length=10, refresh=30000, type="holding" ] {
                          Thing data sma_firmware_main_processor [ readStart="40063", readValueType="uint32", readTransform="default" ]
                          Thing data sma_firmware_logical_component [ readStart="40065", readValueType="uint32", readTransform="default" ]
                          Thing data sma_serialnumber_2 [ readStart="40067", readValueType="uint32", readTransform="default" ]
                          }
                      
                          Bridge poller smaHolding3 [ start=30201, length=4, refresh=30000, type="holding" ] {
                          Thing data sma_condition [ readStart="30201", readValueType="uint32", readTransform="default" ]
                          }
                      
                          Bridge poller smaHolding4 [ start=30529, length=4, refresh=15000, type="holding" ] {
                          //30529 Gesamtertrag (Wh) [E-Total]
                          //30531 Gesamtertrag (kWh) [E-Total]
                          Thing data sma_totalprod_kwh [ readStart="30531", readValueType="uint32", readTransform="default" ]
                          //30533 Gesamtertrag (MWh) [E-Total]
                          }
                      
                          Bridge poller smaHolding5 [ start=30535, length=4, refresh=5000, type="holding" ] {
                          //30535 Tagesertrag (Wh) [E-Total]
                          Thing data sma_dailyprod_wh [ readStart="30535", readValueType="uint32", readTransform="default" ]
                          //30537 Tagesertrag (kWh) [E-Total]
                          //30539 Tagesertrag (MWh) [E-Total]
                          }
                      
                          Bridge poller smaHolding6 [ start=30775, length=20, refresh=5000, type="holding" ] {
                          //30775AC Wirkleistung über alle Phasen (W) [Pac]
                          Thing data sma_power [ readStart="30775", readValueType="uint32", readTransform="default" ]
                          }
                      
                          Bridge poller smaHolding7 [ start=30769, length=20, refresh=5000, type="holding" ] {
                          //30769    DC current input [1]    A
                          Thing data sma_input_ampere_1 [ readStart="30769", readValueType="uint32", readTransform="default" ]
                          //30771    DC voltage input [1]    V
                          Thing data sma_input_voltage_1 [ readStart="30771", readValueType="uint32", readTransform="default" ]
                          //30773    DC power input [1]    W
                          Thing data sma_input_watt_1 [ readStart="30773", readValueType="uint32", readTransform="default" ]
                          }
                      
                          Bridge poller smaHolding8 [ start=30957, length=20, refresh=5000, type="holding" ] {
                          //30957    DC current input [2]    A
                          Thing data sma_input_ampere_2 [ readStart="30957", readValueType="uint32", readTransform="default" ]
                          //30959    DC voltage input [2]    V
                          Thing data sma_input_voltage_2 [ readStart="30959", readValueType="uint32", readTransform="default" ]
                          //30961    DC power input [2]    W
                          Thing data sma_input_watt_2 [ readStart="30961", readValueType="uint32", readTransform="default" ]
                          }
                      }
                      Meine Items dazu
                      Code:
                      /* SMA Photovoltaik SunnyBoy 4000-TL21 */
                      Number    SMA_Device_Class    "[MAP(SMA.map):%s]"                    (Inverter)    {channel="modbus:data:smaTCP:smaHolding1:sma_device_class:number"}
                      Number    SMA_Device_Type        "[MAP(SMA.map):%s]"        <sunnyboy>    (Inverter)    {channel="modbus:data:smaTCP:smaHolding1:sma_device_type:number"}
                      Number    SMA_Serialnumber    "Seriennummer:[%d]"                    (Inverter)    {channel="modbus:data:smaTCP:smaHolding1:sma_serialnumber:number"}
                      String    SMA_Software        "Software package:"                    (Inverter)    {channel="modbus:data:smaTCP:smaHolding1:sma_software:string"}
                      
                      String    SMA_Firmware_Main_Processor        "Firmware Main Proc.:"        (Inverter)    {channel="modbus:data:smaTCP:smaHolding2:sma_firmware_main_processor:string"}
                      String    SMA_Firmware_Logical_Component    "Firmware Logical Comp.:"    (Inverter)    {channel="modbus:data:smaTCP:smaHolding3:sma_firmware_logical_component:string"}
                      Number    SMA_Serialnumber_2                "Serialnumber 2:[%d V]"            (Inverter)    {channel="modbus:data:smaTCP:smaHolding3:sma_serialnumber_2:number"}
                      
                      Number    SMA_Condition        "Status: [MAP(SMA.map):%s]"    (Inverter)    {channel="modbus:data:smaTCP:smaHolding3:sma_condition:number"}
                      
                      Number SMA_power_total_kwh    "Gesamtertrag [%d kWh]"    (Inverter)    {channel="modbus:data:smaTCP:smaHolding4:sma_totalprod_kwh:number"}
                      
                      Number SMA_power_daily_wh    "Tagesertrag [%d Wh]"    (Inverter)    {channel="modbus:data:smaTCP:smaHolding5:sma_dailyprod_wh:number"}
                      
                      Number SMA_power            "Wirkleistung [%d w]"    (Inverter)    {channel="modbus:data:smaTCP:smaHolding6:sma_power:number"}
                      
                      Number SMA_input_ampere_1    "Ampere: [%d A]"    (Inverter)    {channel="modbus:data:smaTCP:smaHolding7:sma_input_ampere_1:number"}
                      Number SMA_input_voltage_1    "Volt: [%d V]"        (Inverter)    {channel="modbus:data:smaTCP:smaHolding7:sma_input_voltage_1:number"}
                      Number SMA_input_watt_1        "Watt [%d W]"        (Inverter)    {channel="modbus:data:smaTCP:smaHolding7:sma_input_watt_1:number"}
                      
                      Number SMA_input_ampere_2    "Ampere [%d A]"        (Inverter)    {channel="modbus:data:smaTCP:smaHolding8:sma_input_ampere_2:number"}
                      Number SMA_input_voltage_2    "Volt [%d V]"        (Inverter)    {channel="modbus:data:smaTCP:smaHolding8:sma_input_voltage_2:number"}
                      Number SMA_input_watt_2        "Watt [%d W]"        (Inverter)    {channel="modbus:data:smaTCP:smaHolding8:sma_input_watt_2:number"}
                      Nicht alle Werte zur Hardware funktionieren schon 100%, da experimentiere ich gerade noch. Wichtig sind für mich aber eher die Leistungsdaten.
                      Als nächstes geht es ans persistieren und die Fehlerbereinigung, wenn der WR abgeschaltet ist.

                      Die Werte sind aktueller als im Sunny Portal, da dort nur alle 30 Min ein Update erfolgt und so kann man noch das eine oder andere Event steuern.

                      Viele Grüße,

                      Jörg

                      Kommentar


                        #26
                        Hi,

                        habe die Modbusabfrage für meinen Wechselrichter SMA Sunny Tripower STP5.0-3AV-40 übernommen, Danke für die sehr gute Beschreibung hier, jedoch bekomme ich beim Tagesertrag keinen sinnvollen Wert, es wird konstant 4294967295 kWh angezeigt.

                        Kann es sein das die Modbusadresse 30537 für den Tagesertrag nicht stimmt ?

                        Grüße Jürgen

                        Kommentar


                          #27
                          Zitat von Juergen151 Beitrag anzeigen
                          Hi,

                          habe die Modbusabfrage für meinen Wechselrichter SMA Sunny Tripower STP5.0-3AV-40 übernommen, Danke für die sehr gute Beschreibung hier, jedoch bekomme ich beim Tagesertrag keinen sinnvollen Wert, es wird konstant 4294967295 kWh angezeigt.

                          Kann es sein das die Modbusadresse 30537 für den Tagesertrag nicht stimmt ?

                          Grüße Jürgen
                          Hi, schau mal hier => https://www.sma.de/produkte/monitori...ittstelle.html
                          Unter Download findest Du die Specs der Schnittstelle. Die Werte unterscheiden sich in einigen Bereichen. Ich habe dies für einen SB-4000TL-21 implementiert.

                          Kommentar


                            #28
                            Zitat von udo1toni Beitrag anzeigen
                            rule:
                            Code:
                            rule "Fehlerbehebung Nacht Wechselrichter"
                            when
                            Item SMA_Wirkleistung changed or
                            Item SMA_DC1_ changed
                            then
                            if(triggeringItem.name == "SMA_Wirkleistung")
                            SMA_Wirkleistung_korr.postUpdate(if((SMA_Wirkleistung.state as Number) > 4500) 0 else (SMA_Wirkleistung.state as Number))
                            else
                            SMA_DC1_korr.postUpdate(if((SMA_DC1_.state as Number) > 4500) 0 else (SMA_DC1_.state as Number))
                            end
                            Ich wollte dies noch einmal aufgreifen und den Code direkt für alle Werte nutzen, und nicht für alle 6 Werte eine Abfrage erstellen.
                            Dazu habe ich mir 6 zusätzliche Items erstellt

                            Code:
                            Number SMA_input_ampere_1_In                                    (gSMA_Input)    {channel="modbus:data:smaTCP:smaHolding7:sma_input_ampere_1 :number"}
                            Number SMA_input_voltage_1_IN                                   (gSMA_Input)    {channel="modbus:data:smaTCP:smaHolding7:sma_input_voltage_ 1:number"}
                            Number SMA_input_watt_1_In                                      (gSMA_Input)    {channel="modbus:data:smaTCP:smaHolding7:sma_input_watt_1:n umber"}
                            Number SMA_input_ampere_1       "Ampere: [%s A]"    <smaampere> (Inverter)  
                            Number SMA_input_voltage_1      "Volt: [%s V]"      <smavolt>   (Inverter)  
                            Number SMA_input_watt_1         "Watt [%d W]"       <smawatt>   (Inverter)  
                            
                            Number SMA_input_ampere_2_In                                    (gSMA_Input)    {channel="modbus:data:smaTCP:smaHolding8:sma_input_ampere_2 :number"}
                            Number SMA_input_voltage_2_In                                   (gSMA_Input)    {channel="modbus:data:smaTCP:smaHolding8:sma_input_voltage_ 2:number"}
                            Number SMA_input_watt_2_In                                      (gSMA_Input)    {channel="modbus:data:smaTCP:smaHolding8:sma_input_watt_2:n umber"}
                            Number SMA_input_ampere_2       "Ampere [%s A]"     <smaampere> (Inverter)  
                            Number SMA_input_voltage_2      "Volt [%s V]"       <smavolt>   (Inverter)  
                            Number SMA_input_watt_2         "Watt [%d W]"       <smawatt>   (Inverter)
                            Test Rule
                            Code:
                            rule "Fehlerbehebung Nacht Wechselrichter"
                            when
                                Member of gSMA_Input changed
                            then
                                if(triggeringItem.name.split("_").get(2) == "ampere") {
                                    logInfo("Sunny", "Note: {}", triggeringItem.name.split("_").get(0))
                                    logInfo("Sunny", "Note: {}", triggeringItem.name.split("_").get(1))
                                    logInfo("Sunny", "Note: {}", triggeringItem.name.split("_").get(2))
                                    logInfo("Sunny", "Note: {}", triggeringItem.name.split("_").get(3))
                                }
                                    SMA_input_ampere_ + triggeringItem.name.split("_").get(3).postUpdate(if((SMA_Wirkleistung.state as Number) > 4500) 0 else (SMA_Wirkleistung.state as Number))
                            end
                            Die Idee war gewesen, Pos. 2 und 3 zu finden und dann das Item anhand der beiden Ergebnisse zu finden und upzudaten.

                            Geht natürlich nicht und das Item wird nicht zusammengebaut Eine andere Idee wäre Filtern mit 2 Parametern, aber dazu habe ich auch nichts gefunden

                            Würde dies grundsätzlich funktionieren, oder bin ich auf dem Holzweg

                            Kommentar


                              #29
                              Knapp daneben

                              Du kannst nicht einfach ein Wort hinschreiben und dann etwas dazu addieren. Wenn schon, müsstest Du einen String verwenden, nur ist ein String kein Objekt, Du müsstest dann die Action statt der Methode verwenden.

                              Sauber geht es so:
                              Code:
                              rule "eine rule für alle"
                              when
                                  Member of gSMA_Input changed
                              then
                                  val output = Inverter.members.filter[i|triggeringItem.name.startsWith(i.name)].head
                                  var Number nWert = 0
                                  if(triggeringItem.state instanceof Number) {
                                      var Number nGrenze = 0
                                      switch(triggeringItem.name.split("_").get(2)) {
                                          case "voltage" : nGrenze = 240
                                          case "ampere" : nGrenze = 20
                                          case "watt" : nGrenze = 4500
                                      }
                                      if(triggeringItem.state as Number < nGrenze) nWert = triggeringItem.state as Number
                                  }
                                  output.sendCommand(nWert)
                              end
                              Im ersten Schritt wird das Zielitem bestimmt, in diesem Fall ist der Name des Zielitems identisch mit dem Beginn des triggernden Items.
                              Im zweiten Schritt wird der neue Wert auf 0 gesetzt (dies ist der default Wert)
                              Im dritten Schritt wird der Grenzwert abhängig vom triggernden Item definiert.
                              Im vierten Schritt wird der aktuelle Wert gesetzt, falls er den Grenzwert nicht überschreitet.
                              Im letzten Schritt wird das Ergebnis zum im 1. Schritt bestimmte Item gesendet.

                              Kommentar


                                #30


                                Es gab eine Fehlerwarnung => Type mismatch: cannot convert from Number<nGrenze> to boolean(org.eclipse.xtext.xbase.validation.IssueCo des.incompatible_types)

                                Diese konnte ich beheben/umgeben indem ich folgendes geändert habe
                                Code:
                                if(triggeringItem.state < nGrenze) nWert = triggeringItem.state as Number
                                Derzeit läuft es smart wie ein Uhrwerk (Ich habe die originären Werte noch zusätzlich angezeigt), mal sehen, wie es wird sobald der WR abschaltet-

                                Kommentar

                                Lädt...
                                X