Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Modbus auslesen und Register anlegen.

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    13
    1
    142

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Modbus auslesen und Register anlegen.

Scheduled Pinned Locked Moved ioBroker Allgemein
18 Posts 4 Posters 2.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    RalfEngelberth
    wrote on last edited by
    #8

    Was verstehst du unter Grundkonfiguration des Adapters.
    Das habe ich doch in meinem ersten Post geschrieben.

    Ich habe es aber mit meiner vorgeschlagenen Variante geschafft.
    30000+1 (USB-Ausgangstabelle) + 1
    Einzutragende Adresse wäre somit 30002 für die Aussentemperatur
    Jetzt werden die Werte in den Objekten angezeigt.
    Ich habe jetzt nur noch das Problem, dass die Werte falsch mutipliziert werden.
    Screenshot 2024-12-30 082439.jpg

    HomoranH 1 Reply Last reply
    0
    • R RalfEngelberth

      Was verstehst du unter Grundkonfiguration des Adapters.
      Das habe ich doch in meinem ersten Post geschrieben.

      Ich habe es aber mit meiner vorgeschlagenen Variante geschafft.
      30000+1 (USB-Ausgangstabelle) + 1
      Einzutragende Adresse wäre somit 30002 für die Aussentemperatur
      Jetzt werden die Werte in den Objekten angezeigt.
      Ich habe jetzt nur noch das Problem, dass die Werte falsch mutipliziert werden.
      Screenshot 2024-12-30 082439.jpg

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #9

      @ralfengelberth mach mal den Haken bei Alias verwenden weg

      kein Support per PN! - Fragen im Forum stellen -

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      R 1 Reply Last reply
      0
      • HomoranH Homoran

        @ralfengelberth mach mal den Haken bei Alias verwenden weg

        R Offline
        R Offline
        RalfEngelberth
        wrote on last edited by Homoran
        #10

        @homoran sagte in Modbus auslesen und Register anlegen.:

        @ralfengelberth mach mal den Haken bei Alias verwenden weg

        Nach dem entfernen von Alias haben sich alle Adressen auf die Grundadresse geändert.
        Also aus 30002 wurde 1

        Jetzt habe ich nur noch das Problem mit den Ausgabewerten.
        Hier am Beispiel Aussentemperatur
        Die Vorgabe der USB-Ausgabetabelle war wie folgt.

        25a13802-7fa8-477f-890f-6596f01e6d74-image.png

        Titel	Re­gister­typ	Re­gister	Divi­sions­faktor	Ein­heit	Vari­ablen­größe	Mindest­wert	Höchst­wert	Stan­dard­wert	Column1
        Aktuelle Außenlufttemperatur (BT1)	MODBUS_INPUT_REGISTER	1	10	°C	2	0	0	0	
        

        Die Eingabe im Adapter habe ich so gemacht

        _address	name	description	unit	type	len	factor	offset	formula	role	room	cw	isScale
        1	1	Aktuelle Außenlufttemperatur (BT1)	°C	int16be	1	10	0		value.temperature		false	false
        

        Jetzt wir mir aber die Aussentemperatur mit z.B. 10°C angezeigt.
        Hier müsste eigentlich -0,1°C stehen
        Wenn ich den Faktor von 10 auf -0.1 ändere wird mir auch die Aussentemperatur richtig mit -0.1°C angezeigt.

        Bei anderen Werten steht auch als Vorgabe in der USB-Ausgangstabell eine 10.
        Hier muss ich den Wert sogar auf -0.001 ändern um einen richtigen Wert zu bekommen.
        Was mache ich falsch?

        HomoranH 1 Reply Last reply
        0
        • R RalfEngelberth

          @homoran sagte in Modbus auslesen und Register anlegen.:

          @ralfengelberth mach mal den Haken bei Alias verwenden weg

          Nach dem entfernen von Alias haben sich alle Adressen auf die Grundadresse geändert.
          Also aus 30002 wurde 1

          Jetzt habe ich nur noch das Problem mit den Ausgabewerten.
          Hier am Beispiel Aussentemperatur
          Die Vorgabe der USB-Ausgabetabelle war wie folgt.

          25a13802-7fa8-477f-890f-6596f01e6d74-image.png

          Titel	Re­gister­typ	Re­gister	Divi­sions­faktor	Ein­heit	Vari­ablen­größe	Mindest­wert	Höchst­wert	Stan­dard­wert	Column1
          Aktuelle Außenlufttemperatur (BT1)	MODBUS_INPUT_REGISTER	1	10	°C	2	0	0	0	
          

          Die Eingabe im Adapter habe ich so gemacht

          _address	name	description	unit	type	len	factor	offset	formula	role	room	cw	isScale
          1	1	Aktuelle Außenlufttemperatur (BT1)	°C	int16be	1	10	0		value.temperature		false	false
          

          Jetzt wir mir aber die Aussentemperatur mit z.B. 10°C angezeigt.
          Hier müsste eigentlich -0,1°C stehen
          Wenn ich den Faktor von 10 auf -0.1 ändere wird mir auch die Aussentemperatur richtig mit -0.1°C angezeigt.

          Bei anderen Werten steht auch als Vorgabe in der USB-Ausgangstabell eine 10.
          Hier muss ich den Wert sogar auf -0.001 ändern um einen richtigen Wert zu bekommen.
          Was mache ich falsch?

          HomoranH Do not disturb
          HomoranH Do not disturb
          Homoran
          Global Moderator Administrators
          wrote on last edited by
          #11

          @ralfengelberth mach mal bitte einen Screenshot der Einstellg für den Register!
          Hier sieht man die Zuordnung der Spalten nicht.

          Wie kommst du auf int16be?

          kein Support per PN! - Fragen im Forum stellen -

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          HomoranH 1 Reply Last reply
          0
          • HomoranH Homoran

            @ralfengelberth mach mal bitte einen Screenshot der Einstellg für den Register!
            Hier sieht man die Zuordnung der Spalten nicht.

            Wie kommst du auf int16be?

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by
            #12

            @homoran sagte in Modbus auslesen und Register anlegen.:

            @ralfengelberth mach mal bitte einen Screenshot der Einstellg für den Register!
            Hier sieht man die Zuordnung der Spalten nicht.

            Wie kommst du auf int16be?

            wenn ich die Werte versuche zuzuordnen gibt es eine Spalte "Divisionsfaktor"
            Eine Division durch 10 entspricht einem Faktor von 0.1

            Einen negativen Faktor solltest du nicht verwenden müssen.

            Möglicherweise ist das Problem hier

            @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

            Nach dem entfernen von Alias haben sich alle Adressen auf die Grundadresse geändert.
            Also aus 30002 wurde 1

            du schriebst zu Beginn

            @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

            Die Aussentemperatur-Adresse gem USB-Ausgabetabelle = 1
            30000+1 (USB-Ausgangstabelle) + 1

            dann bist du ggf. nicht bei der korrekten Adresse
            versuch mal die 2

            kein Support per PN! - Fragen im Forum stellen -

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            R 1 Reply Last reply
            0
            • HomoranH Homoran

              @homoran sagte in Modbus auslesen und Register anlegen.:

              @ralfengelberth mach mal bitte einen Screenshot der Einstellg für den Register!
              Hier sieht man die Zuordnung der Spalten nicht.

              Wie kommst du auf int16be?

              wenn ich die Werte versuche zuzuordnen gibt es eine Spalte "Divisionsfaktor"
              Eine Division durch 10 entspricht einem Faktor von 0.1

              Einen negativen Faktor solltest du nicht verwenden müssen.

              Möglicherweise ist das Problem hier

              @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

              Nach dem entfernen von Alias haben sich alle Adressen auf die Grundadresse geändert.
              Also aus 30002 wurde 1

              du schriebst zu Beginn

              @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

              Die Aussentemperatur-Adresse gem USB-Ausgabetabelle = 1
              30000+1 (USB-Ausgangstabelle) + 1

              dann bist du ggf. nicht bei der korrekten Adresse
              versuch mal die 2

              R Offline
              R Offline
              RalfEngelberth
              wrote on last edited by
              #13

              @homoran
              @homoran
              Die Signed 16 bit habe ich hier aus dem Forum.
              https://forum.iobroker.net/topic/68134/nibe-smo-s40-im-iobrocker-anzeigen-lassen/2?_=1735651025789
              Wenn ich dann auf TSV bearbeiten gehe wird mir dort Signed 16 bit als int16be angezeigt.
              Zur info: Der dort erwähne myuplink-Adapter liefert nicht alle Daten und die Daten werden auch teilweise nicht aktualisiert.
              Mit der direkten abfrage über Modbus habe ich bessere Erfahrungen.

              Hier die Zuordnung der Daten
              Screenshot 2024-12-31 140907.jpg

              Wenn ich das Minus vor werglasse, wird mir die z.B. Aussentemperatur mit +0,6°C angezeigt.
              Es sind aber -0,6°C momentan.

              Mit den Werten habe ich es hinbekommen.
              Warum -0.1 oder 0.1 oder -0.001 ist mir nicht ersichtlich aber die Werte werden jetzt richtig angezeigt.

              Hier das Ergebniss
              Screenshot 2024-12-31 141335.jpg

              HomoranH 1 Reply Last reply
              0
              • R RalfEngelberth

                @homoran
                @homoran
                Die Signed 16 bit habe ich hier aus dem Forum.
                https://forum.iobroker.net/topic/68134/nibe-smo-s40-im-iobrocker-anzeigen-lassen/2?_=1735651025789
                Wenn ich dann auf TSV bearbeiten gehe wird mir dort Signed 16 bit als int16be angezeigt.
                Zur info: Der dort erwähne myuplink-Adapter liefert nicht alle Daten und die Daten werden auch teilweise nicht aktualisiert.
                Mit der direkten abfrage über Modbus habe ich bessere Erfahrungen.

                Hier die Zuordnung der Daten
                Screenshot 2024-12-31 140907.jpg

                Wenn ich das Minus vor werglasse, wird mir die z.B. Aussentemperatur mit +0,6°C angezeigt.
                Es sind aber -0,6°C momentan.

                Mit den Werten habe ich es hinbekommen.
                Warum -0.1 oder 0.1 oder -0.001 ist mir nicht ersichtlich aber die Werte werden jetzt richtig angezeigt.

                Hier das Ergebniss
                Screenshot 2024-12-31 141335.jpg

                HomoranH Do not disturb
                HomoranH Do not disturb
                Homoran
                Global Moderator Administrators
                wrote on last edited by Homoran
                #14

                @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                Hier die Zuordnung der Daten

                warum heissen die Alle 1?
                zum Glück lässt du das Register mit in die ID schreiben, sonst gäbe es echte Probleme

                @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                Warum -0.1 oder 0.1 oder -0.001 ist mir nicht ersichtlich

                Das kommt auf die Genauigkeit der gelieferten Daten und dem zugehörigen Format an.
                und wie gesagt sollte ein negativer Fakror nicht nötig sein.

                signed Integer hat ein Vorzeichen

                @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                Wenn ich das Minus vor werglasse, wird mir die z.B. Aussentemperatur mit +0,6°C angezeigt.
                Es sind aber -0,6°C momentan.

                und was passiert dann bei +0.6°C?

                kein Support per PN! - Fragen im Forum stellen -

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                R 1 Reply Last reply
                0
                • HomoranH Homoran

                  @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                  Hier die Zuordnung der Daten

                  warum heissen die Alle 1?
                  zum Glück lässt du das Register mit in die ID schreiben, sonst gäbe es echte Probleme

                  @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                  Warum -0.1 oder 0.1 oder -0.001 ist mir nicht ersichtlich

                  Das kommt auf die Genauigkeit der gelieferten Daten und dem zugehörigen Format an.
                  und wie gesagt sollte ein negativer Fakror nicht nötig sein.

                  signed Integer hat ein Vorzeichen

                  @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                  Wenn ich das Minus vor werglasse, wird mir die z.B. Aussentemperatur mit +0,6°C angezeigt.
                  Es sind aber -0,6°C momentan.

                  und was passiert dann bei +0.6°C?

                  R Offline
                  R Offline
                  RalfEngelberth
                  wrote on last edited by
                  #15

                  @homoran Ich habe hier die Adressen mal überarbeitet und bin diese am Testen.
                  Die Vorzeichen(-) habe ich alle entfernt.
                  ich werde mich wieder melden, ob ich Erfolg hatte.

                  _address	name	description	unit	type	len	factor	offset	formula	role	room	cw	isScale
                  1	AT	Aktuelle Außenlufttemperatur (BT1)	°C	int16be	1	0.1	0		value.temperature		false	false
                  8	BWBT7	Brauchwasser, oben (BT7)	°C	int16be	1	0.1	0		value.temperature		false	false
                  9	BWBT6	Brauchwasserbereitung (BT6)	°C	int16be	1	0.1	0		value.temperature		false	false
                  37	MTBT1	Mittlere Temperatur (BT1)	°C	int16be	1	0.1	0		value.temperature		false	false
                  39	EVLBT25	Externer Vorlauf (BT25)	°C	int16be	1	0.1	0		value.temperature		false	false
                  72	ZHBT63	Zusatzheizung (BT63)	°C	int16be	1	0.1	0		value.temperature		false	false
                  88	RLBT71	Rücklauf (BT71)	°C	int16be	1	0.1	0		value.temperature		false	false
                  160	ZK	Zusätzliche Kühlung		int16be	1	1	0		value.temperature		false	false
                  690	ZH	Zusatzheizung mit Vorrang zulassen		int16be	1	1	0		value.temperature		false	false
                  1017	BVLK1	Berechneter Vorlauf Klimatisierungssystem 1	°C	int16be	1	0.1	0		value.temperature		false	false
                  1019	KSTATUS	Kühlung Status		int16be	1	1	0		value.temperature		false	false
                  1475	RLBT3	Rücklauf (EB101-BT3)	°C	int16be	1	0.1	0		value.temperature		false	false
                  1478	VLBT12	Vorlauf (EB101-BT12)	°C	int16be	1	0.1	0		value.temperature		false	false
                  1567	BKVL1	Berechneter Kühlungsvorlauf Klimatisierungssystem 1	°C	int16be	1	0.1	0		value.temperature		false	false
                  1689	BWBT7	Brauchwasserfühler für die Anzeige (EB100-BT7)	°C	int16be	1	0.1	0		value.temperature		false	false
                  1911	SG	Betriebsmodus (SG Ready)		int16be	1	1	0		value.temperature		false	false
                  2802	TEMRMU	Temperatur: RMU S40 1	°C	int16be	1	0.1	0		value.temperature		false	false
                  3132	LFRMU	Luftfeuchtigkeit: RMU S40 1	%RH	int16be	1	0.1	0		value.temperature		false	false
                  
                  HomoranH 1 Reply Last reply
                  0
                  • R RalfEngelberth

                    @homoran Ich habe hier die Adressen mal überarbeitet und bin diese am Testen.
                    Die Vorzeichen(-) habe ich alle entfernt.
                    ich werde mich wieder melden, ob ich Erfolg hatte.

                    _address	name	description	unit	type	len	factor	offset	formula	role	room	cw	isScale
                    1	AT	Aktuelle Außenlufttemperatur (BT1)	°C	int16be	1	0.1	0		value.temperature		false	false
                    8	BWBT7	Brauchwasser, oben (BT7)	°C	int16be	1	0.1	0		value.temperature		false	false
                    9	BWBT6	Brauchwasserbereitung (BT6)	°C	int16be	1	0.1	0		value.temperature		false	false
                    37	MTBT1	Mittlere Temperatur (BT1)	°C	int16be	1	0.1	0		value.temperature		false	false
                    39	EVLBT25	Externer Vorlauf (BT25)	°C	int16be	1	0.1	0		value.temperature		false	false
                    72	ZHBT63	Zusatzheizung (BT63)	°C	int16be	1	0.1	0		value.temperature		false	false
                    88	RLBT71	Rücklauf (BT71)	°C	int16be	1	0.1	0		value.temperature		false	false
                    160	ZK	Zusätzliche Kühlung		int16be	1	1	0		value.temperature		false	false
                    690	ZH	Zusatzheizung mit Vorrang zulassen		int16be	1	1	0		value.temperature		false	false
                    1017	BVLK1	Berechneter Vorlauf Klimatisierungssystem 1	°C	int16be	1	0.1	0		value.temperature		false	false
                    1019	KSTATUS	Kühlung Status		int16be	1	1	0		value.temperature		false	false
                    1475	RLBT3	Rücklauf (EB101-BT3)	°C	int16be	1	0.1	0		value.temperature		false	false
                    1478	VLBT12	Vorlauf (EB101-BT12)	°C	int16be	1	0.1	0		value.temperature		false	false
                    1567	BKVL1	Berechneter Kühlungsvorlauf Klimatisierungssystem 1	°C	int16be	1	0.1	0		value.temperature		false	false
                    1689	BWBT7	Brauchwasserfühler für die Anzeige (EB100-BT7)	°C	int16be	1	0.1	0		value.temperature		false	false
                    1911	SG	Betriebsmodus (SG Ready)		int16be	1	1	0		value.temperature		false	false
                    2802	TEMRMU	Temperatur: RMU S40 1	°C	int16be	1	0.1	0		value.temperature		false	false
                    3132	LFRMU	Luftfeuchtigkeit: RMU S40 1	%RH	int16be	1	0.1	0		value.temperature		false	false
                    
                    HomoranH Do not disturb
                    HomoranH Do not disturb
                    Homoran
                    Global Moderator Administrators
                    wrote on last edited by
                    #16

                    @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                    Ich habe hier die Adressen mal überarbeitet und bin diese am Testen.

                    Es ist sinnvoll mit einer einzigen Adresse zu beginnen.

                    @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                    ob ich Erfolg hatte.

                    der OFFSET kann 30000 oder 30001 sein, also das Testregister mal +/- 1 versuchen.

                    kein Support per PN! - Fragen im Forum stellen -

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    R 1 Reply Last reply
                    0
                    • HomoranH Homoran

                      @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                      Ich habe hier die Adressen mal überarbeitet und bin diese am Testen.

                      Es ist sinnvoll mit einer einzigen Adresse zu beginnen.

                      @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                      ob ich Erfolg hatte.

                      der OFFSET kann 30000 oder 30001 sein, also das Testregister mal +/- 1 versuchen.

                      R Offline
                      R Offline
                      RalfEngelberth
                      wrote on last edited by
                      #17

                      @homoran sagte in Modbus auslesen und Register anlegen.:

                      @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                      ob ich Erfolg hatte.

                      der OFFSET kann 30000 oder 30001 sein, also das Testregister mal +/- 1 versuchen.

                      Wenn ich den Offset z.B. 3000 stelle wird mir auch die Temperatur mit 3000 addiert.
                      Mit Offset 0 werden die Werte richtig angezeigt.
                      Warum sollte ich auf OFFSET 3000 stellen?
                      Gem. GitHub ist doch x * Factor + Offset

                      1 Reply Last reply
                      0
                      • HomoranH Do not disturb
                        HomoranH Do not disturb
                        Homoran
                        Global Moderator Administrators
                        wrote on last edited by
                        #18

                        @ralfengelberth sagte in Modbus auslesen und Register anlegen.:

                        Wenn ich den Offset z.B. 3000 stelle wird mir auch die Temperatur mit 3000 addiert.

                        nicht der Offset!

                        Ich meine den internen Offset der Alias-Verwaltung, beim Client.

                        da kann zu dem Register 1 29999, 30000 oder 30001 hinzuaddiert werden

                        kein Support per PN! - Fragen im Forum stellen -

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        ioBroker freut sich auch über eine Spende für das Forum. Benutzt dazu den Spendenbutton im Header. Danke!

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        562

                        Online

                        32.7k

                        Users

                        82.4k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe