Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Absturz in fhem Adapter

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Absturz in fhem Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • LausiD
      LausiD last edited by

      puh…..jetzt bin ich aber beruhigt.

      Ok hilft dir nicht weiter 🙂

      Wie sieht dein script aus?

      Hat sich die Fehlermeldung eigentlich geändert?

      Der Teil ist interessant: iobroker.fhem/main.js:206:25

      1 Reply Last reply Reply Quote 0
      • A
        aski71 last edited by

        Skript 1 wird über ein notify getriggert. Sobald an der Oberfläche "on" oder "off" geschaltet wird, läuft es los.

        Abhängig vom "on" oder "off" werden 1 Sonos Wecker und 2 Hue Schedules ein- oder ausgeschaltet.

        Hier werden noch aus Debug-Gründen Readings gesetzt.

        sub
        toggleWakeupSchedules($)
        {
           my ($Value)  = @_;
           my %hueToggle = ('status' => "undef");
           my $sonosToggle = 1;
        
           if ("$Value" eq "on")
           {
              %hueToggle = ('status' => "enabled");
              $sonosToggle = "enable";
           } elsif ("$Value" eq "off") {
              %hueToggle = ('status' => "disabled");
              $sonosToggle = "disable";
           } else {
              return;
           }
        
           # Toggle Alarm No ID 1 at Sonos Beam SZ
           fhem "set Sonos_Schlafzimmer Alarm $sonosToggle 1";
        
           # Create a user agent object
           my $ua = LWP::UserAgent->new;
           $ua->agent("MyApp/0.1");
        
           my $jsonToggle = encode_json \%hueToggle;
        
           # Create a Hue request for Elke
           my $req1 = HTTP::Request->new(PUT => 'http://192.168.2.46/api/<xyz>/schedules/2');
           $req1->content_type('application/json');
           $req1->content($jsonToggle);
        
           # Create a Hue request for Alex
           my $req2 = HTTP::Request->new(PUT => 'http://192.168.2.46/api/<xyz>/schedules/4');
           $req2->content_type('application/json');
           $req2->content($jsonToggle);
        
           # Pass requests to the user agent and get a response back
           my $res1 = $ua->request($req1);
           my $res2 = $ua->request($req2);
           my $hash1 = decode_json $res1->content;
           my $hash2 = decode_json $res2->content;
           my $niceHash1 = Dumper $hash1;
           my $niceHash2 = Dumper $hash2;
        
           # Check the outcomes of the responses
           if ($res1->is_success) {
             fhem "setreading Wecker hueElkeLichtWeckerReturn $niceHash1";
           } else {
              fhem "setreading Wecker hueElkeLichtWeckerReturn $res1->status_line";
           }
           if ($res2->is_success) {
             fhem "setreading Wecker hueAlexLichtWeckerReturn $niceHash2";
           } else {
             fhem "setreading Wecker hueAlexLichtWeckerReturn $res2->status_line";
           }
        
           # Aufruf, den Hue Zustand und den Sonos-Zustand zu aktualisieren
           getWakeupSchedules();
        }</xyz></xyz> 
        

        Am Ende wird das Skript getWakeupSchedules gestartet, das die Readings im Dummy-Device aktualisiert und daraus den konsolidierten State "on" oder "off" oder "mixed" setzt:

        sub
        getWakeupSchedules
        {
           # Create a user agent object
           my $ua = LWP::UserAgent->new;
           $ua->agent("MyApp/0.1");
        
           # Create a Hue request
           my $req = HTTP::Request->new(GET => 'http://192.168.2.46/api/<xyz>/schedules');
        
           # Pass request to the user agent and get a response back
           my $res = $ua->request($req);
        
           my $elkeLichtWecker="undef";
           my $alexLichtWecker="undef";
        
           # Check the outcome of the Hue response
           if ($res->is_success) {
             my $hash = decode_json $res->content;
             my $niceHash = Dumper $hash;
             $elkeLichtWecker = $hash->{2}->{status};
             $alexLichtWecker = $hash->{4}->{status};
             # Set Hue Readings for Wecker
             fhem "setreading Wecker hueSchedulesList $niceHash";
             fhem "setreading Wecker hueElkeLichtWecker $elkeLichtWecker";
             fhem "setreading Wecker hueAlexLichtWecker $alexLichtWecker";
           } else {
             fhem "setreading Wecker hueSchedulesList $res->status_line";
           }
        
           my $sonosSZenabled = eval(ReadingsVal("Sonos_Schlafzimmer","AlarmList","{}"))->{1}->{Enabled};
           fhem "setreading Wecker sonosSZenabled $sonosSZenabled";
        
           if ( "$elkeLichtWecker" eq "enabled" && "$alexLichtWecker" eq "enabled" && $sonosSZenabled == 1 ) 
           {
              fhem "setstate Wecker on"; 
           } elsif ("$elkeLichtWecker" eq "disabled" && "$alexLichtWecker" eq "disabled" && $sonosSZenabled == 0)
           {
              fhem "setstate Wecker off";
           } else
           {
              fhem "setstate Wecker mixed";
           }</xyz> 
        

        Additive Info: die Sonos-Abfrage liefert derzeit an immer erstmal den falschen Wert, so dass grundsätzlich ein "mixed" entsteht. Das ist aber ein anderes Problem, dem ich auf den Grund zu gehen versuche. Startet man nämlich unmittelbar danach getWakeupSchedules() von Hand, oder löst die gleiche Aktion über die Oberfläche nochmal aus, stimmt es wieder. Kann mir aber nicht vorstellen, dass das was mit dem aktuellen Problem zu tun hat.

        1 Reply Last reply Reply Quote 0
        • LausiD
          LausiD last edited by

          Ach du hast den script unter Perl/Fhem gemacht…dachte ioBroker JS 🙂

          Ersetze im 2. script mal alle Zeilen mit fhem "setstate Wecker on"; in fhem "set Wecker on"

          Zusätzlich noch fhem.1.info.Settings.logEventFHEMstate auf true. Damit werden alle state Änderungen ins Log von ioBroker geschrieben

          1 Reply Last reply Reply Quote 0
          • A
            aski71 last edited by

            @LausiD:

            Hat sich die Fehlermeldung eigentlich geändert?

            Der Teil ist interessant: iobroker.fhem/main.js:206:25 `

            Sorry, übersehen.

            Ja, hat sich geändert:

                at parseEvent (/opt/iobroker/node_modules/iobroker.fhem/main.js:212:25)
                at Telnet.telnetIn.on.data (/opt/iobroker/node_modules/iobroker.fhem/main.js:2146:33)
            
            
            1 Reply Last reply Reply Quote 0
            • A
              aski71 last edited by

              @LausiD:

              Ach du hast den script unter Perl/Fhem gemacht…dachte ioBroker JS 🙂

              Ersetze im 2. script mal alle Zeilen mit fhem "setstate Wecker on"; in fhem "set Wecker on"

              Zusätzlich noch fhem.1.info.Settings.logEventFHEMstate auf true. Damit werden alle state Änderungen ins Log von ioBroker geschrieben `

              Das war bis vor 15 Minuten noch ein "set Wecker …".

              Ich bin zwischenzeitlich mal auf die Idee gekommen, es auf "setstate Wecker ..." zu ändern. Der set löst ja wieder ein Event aus und schickt die Skripte nochmal in den Krieg, oder?

              Die Änderung hat nix gebracht.

              Ich hab dann zur Sicherheit auch noch das "event-on-change-reading .*" rausgenommen.

              Keine Änderung.

              1 Reply Last reply Reply Quote 0
              • LausiD
                LausiD last edited by

                Ok…passt

                Mh FHEM muss aus irgendeinem Grund einen Event nur aus einem Wort generieren.

                Könnte das im Adapter unterdrücken, aber jetz interessiert es mich schon 🙂

                Mit fhem.0.info.Settings.logEventFHEM auf true bekommst du im Log ioBroker alle events aus FHEM angezeigt.

                Nach einem event aus einem Wort muss Fehlermeldung kommen

                1 Reply Last reply Reply Quote 0
                • A
                  aski71 last edited by

                  Krieg ich leider nicht.

                  Sehe im iobroker Log keinerlei fhem Events.

                  Ich habe inzwischen mal rumgespielt und den getWakeupSchedules() Aufruf rausgenommen.

                  Effekt ist der gleiche: Absturz, wenn das Skript startet.

                  Dann habe ich mal in fhem { getWakeupSchedules() } manuell gestartet und mir dort die Events anzeigen lassen.

                  Die sehen so aus:

                  2018-12-30 01:36:00 dummy Wecker hueSchedulesList: {   '1' => {            'created' => '2018-12-17T14:41:39',            'command' => {                           'method' => 'PUT',                           'body' => {                                       'status' => 0                                     },                           'address' => '/api/mIIFI0nT5fJDjWzXLJngqo7jporLBGfNK9DI7HRr/sensors/3/state'                         },            'time' => 'PT00:00:10',            'starttime' => '2018-12-17T14:41:39',            'name' => 'Dimmer Switch 2 Reset',            'recycle' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),            'status' => 'disabled',            'autodelete' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),            'localtime' => 'PT00:00:10',            'description' => 'Resets dimmer switch scene cycler'          },   '5' => {            'time' => 'PT00:01:00',            'created' => '2018-11-07T23:03:18',            'command' => {                           'method' => 'PUT',                           'body' => {                                       'scene' => 'rG7qkF-1HZ8nT9W'                                     },                           'address' => '/api/r8X1c3wCpv8qMulPzRzSGV-OiN4QrHKq/groups/0/action'                         },            'name' => 'L_04_njqbA',            'starttime' => '2018-12-27T05:29:00',            'recycle' => $VAR1->{'1'}{'recycle'},            'status' => 'disabled',            'autodelete' => $VAR1->{'1'}{'autodelete'},            'localtime' => 'PT00:01:00',            'description' => 'L_04_njqbA_trigger end scene'          },   '3' => {            'status' => 'disabled',            'recycle' => $VAR1->{'1'}{'recycle'},            'name' => 'L_04_A9Aeu',            'starttime' => '2018-12-27T04:50:00',            'time' => 'PT00:01:00',            'created' => '2018-11-05T05:49:50',            'command' => {                           'address' => '/api/r8X1c3wCpv8qMulPzRzSGV-OiN4QrHKq/groups/0/action',                           'body' => {                                       'scene' => 'V080xDoezs6QZjg'                                     },                           'method' => 'PUT'                         },            'description' => 'L_04_A9Aeu_trigger end scene',            'localtime' => 'PT00:01:00',            'autodelete' => $VAR1->{'1'}{'autodelete'}          },   '4' => {            'localtime' => 'W124/T06:29:00',            'description' => 'L_04_njqbA_start wake up',            'created' => '2018-11-07T23:03:18',            'command' => {                           'address' => '/api/r8X1c3wCpv8qMulPzRzSGV-OiN4QrHKq/sensors/5/state',                           'body' => {                                       'flag' => $VAR1->{'1'}{'recycle'}                                     },                           'method' => 'PUT'                         },            'time' => 'W124/T05:29:00',            'name' => "Nat\x{fc}rlich Aufwachen Alex",            'status' => 'disabled',            'recycle' => $VAR1->{'1'}{'recycle'}          },   '2' => {            'description' => 'L_04_A9Aeu_start wake up',            'localtime' => 'W124/T05:50:00',            'recycle' => $VAR1->{'1'}{'recycle'},            'status' => 'disabled',            'name' => "Nat\x{fc}rlich Aufwachen Elke",            'time' => 'W124/T04:50:00',            'command' => {                           'method' => 'PUT',                           'address' => '/api/r8X1c3wCpv8qMulPzRzSGV-OiN4QrHKq/sensors/4/state',                           'body' => {                                       'flag' => $VAR1->{'1'}{'recycle'}                                     }                         },            'created' => '2018-11-05T05:49:50'          } } 
                  2018-12-30 01:36:00 dummy Wecker hueElkeLichtWecker: disabled
                  2018-12-30 01:36:00 dummy Wecker hueAlexLichtWecker: disabled
                  2018-12-30 01:36:00 dummy Wecker sonosSZenabled: 0
                  
                  

                  Wenn nur toggleWakeupSchedules läuft, sieht es so aus:

                  2018-12-30 01:41:12 dummy Wecker on
                  2018-12-30 01:41:12 dummy Wecker hueElkeLichtWeckerReturn: [   {     'success' => {                    '/schedules/2/status' => 'enabled'                  }   } ] 
                  2018-12-30 01:41:12 dummy Wecker hueAlexLichtWeckerReturn: [   {     'success' => {                    '/schedules/4/status' => 'enabled'                  }   } ] 
                  2018-12-30 01:41:12 SONOSPLAYER Sonos_Schlafzimmer LastActionResult: SetAlarm: #1: Success!, 
                  2018-12-30 01:41:12 SONOS Sonos LastProcessAnswer: 1546130472
                  2018-12-30 01:41:13 SONOSPLAYER Sonos_Schlafzimmer AlarmList: {'1' => {'Recurrence_Saturday' => 0,'Recurrence_Friday' => 1,'IncludeLinkedZones' => '0','Recurrence_Wednesday' => 1,'Recurrence_Monday' => 1,'Recurrence_Once' => 0,'Volume' => '13','Duration' => '01:40:00','StartTime' => '06:00:00','Recurrence_Tuesday' => 1,'ProgramMetaData' => 'Radio Gong 96.3object.item.audioItem.audioBroadcastSA_RINCON67591_','ProgramURI' => 'x-sonosapi-stream:STATION%3a41483?sid=264&flags=8224&sn=2','Repeat' => 1,'Recurrence_Sunday' => 0,'Enabled' => '1','Shuffle' => 1,'RoomUUID' => 'RINCON_949F3EC0DF0201400','Recurrence_Thursday' => 1}}
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • A
                    aski71 last edited by

                    So. Wieder mein Fehler. Ist auch schon spät. :lol:

                    Nachdem ich den richtigen Parameter auf true gesetzt habe:

                    fhem.0	2018-12-30 01:46:53.502	info	event (FHEM) "]"
                    fhem.0	2018-12-30 01:46:53.502	info	event (FHEM) " }"
                    fhem.0	2018-12-30 01:46:53.502	info	event (FHEM) " }"
                    fhem.0	2018-12-30 01:46:53.502	info	event (FHEM) " '/schedules/2/status' => 'disabled'"
                    fhem.0	2018-12-30 01:46:53.502	info	event (FHEM) " 'success' => {"
                    fhem.0	2018-12-30 01:46:53.502	info	event (FHEM) " {"
                    fhem.0	2018-12-30 01:46:53.501	info	event (FHEM) "dummy Wecker hueElkeLichtWeckerReturn: ["
                    fhem.0	2018-12-30 01:46:53.501	info	event FHEM(s) "dummy Wecker off" > fhem.0.Wecker.state off
                    fhem.0	2018-12-30 01:46:53.501	info	event (FHEM) "dummy Wecker off"
                    
                    

                    Das passiert in iobroker, wenn ich den Button betätige.

                    Ich glaube, jetzt kommen wir der Sache auf die Spur! Das ergibt zusammen mit den in fhem angezeigten Events ein Bild. :?

                    1 Reply Last reply Reply Quote 0
                    • LausiD
                      LausiD last edited by

                      Dann muss das Problem ja im 1.script auftauchen….

                      Wenn du fhem.0.info.Settings.logEventFHEM auf true setzt bekommmst du keine events aus FHEM im Log von ioBroker?

                      1 Reply Last reply Reply Quote 0
                      • LausiD
                        LausiD last edited by

                        Ja sit wirklich spät 🙂

                        Aber da sind die gesuchten events 🙂

                        Ich änder kurz was am Adapter…..

                        1 Reply Last reply Reply Quote 0
                        • A
                          aski71 last edited by

                          @LausiD:

                          Dann muss das Problem ja im 1.script auftauchen….

                          Wenn du fhem.0.info.Settings.logEventFHEM auf true setzt bekommmst du keine events aus FHEM im Log von ioBroker? `

                          Siehe oben. Ich hatte versehentlich .logEventFHEMstate auf true gesetzt, statt .logEventFHEM. :roll: :lol:

                          1 Reply Last reply Reply Quote 0
                          • LausiD
                            LausiD last edited by

                            Hihi….ja gar nicht so leicht um die Zeit 🙂

                            Ok wir machen noch eine schnelle Lösung zum Problem:

                            Unter fhem.0.info.Configurations.ignoreReadings trägst du mal alle deine Readings wie hueElkeLichtWeckerReturn usw mit Komma getrennt ein

                            Problem sind die "/n" = Zeilenumbruch in deinen Readings

                            1 Reply Last reply Reply Quote 0
                            • LausiD
                              LausiD last edited by

                              Wenn du alles in FHEM machst könnte das ja für dich auch interessant sein 🙂

                              1. In FHEM wird automatisch ein dummy send2ioB im Raum ioB_System angelegt.

                              2. Mit "set send2ioB [Objekt in ioBroker] [Wert]" können states im ioBroker gesetzt werden.

                              zB set send2ioB alexa2.0.Echo-Devices.[deine id].Commands.speak FHEM lässt Alexa sprechen

                              3. Es erfolgt eine Prüfung ob Objekt vorhanden und Write=true ist

                              Was machst du mit ioBroker? VIS?

                              1 Reply Last reply Reply Quote 0
                              • A
                                aski71 last edited by

                                Wo muss das rein?

                                Unter "Wert"?

                                Oder unter "Name", wo schon "ignore Readings = currentTrackPositionSimulated,currentTrackPositionSimulatedSec + Wert" steht?

                                Ich habe jetzt unter "Wert" folgendes stehen:

                                hueAlexLichtWeckerReturn,hueElkeLichtWeckerReturn,hueSchedulesList

                                Leider werden die Readings nicht ignoriert und der Adapter stürzt weiterhin ab.

                                1 Reply Last reply Reply Quote 0
                                • LausiD
                                  LausiD last edited by

                                  Ja, unter Wert ist ok.

                                  Neustart Adapter?

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    aski71 last edited by

                                    Neugestartet hat er sich inzwischen mehrmals. 😄

                                    Scheint aber nicht zu greifen.

                                    Das mit dem ioB_System schau ich mir bei Gelegenheit mal an.

                                    Was ich mit dem ioBroker mache? Alles, was irgendwie mit fhem nicht geht. :lol:

                                    Und mit fhem, alles was mit ioBroker nicht geht. :lol:

                                    Ich versuch eigentlich, so viel wie möglich Skriptkram mit dem ioBroker zu machen.

                                    Hier ist's mal umgekehrt.

                                    Was mach ich jetzt falsch, dass das ignoreReadings nicht greift?

                                    1 Reply Last reply Reply Quote 0
                                    • LausiD
                                      LausiD last edited by

                                      jo beides kombiniert ist echt ein Burner 🙂

                                      Mh, gerade bei mir probiert…readings unter Wert bei fhem.0.info.Configurations.ignoreReadings werden ignoriert

                                      Alternativ:

                                      event-on-change-reading = state

                                      1 Reply Last reply Reply Quote 0
                                      • A
                                        aski71 last edited by

                                        Bei mir leider nicht.

                                        Beim Starten des Adapters wird zwar angezeigt, dass diese Readings ignoriert werden. Ich seh sie aber trotzdem und der Adapter schmiert ab.

                                        Jou: Mit event-on-change-reading auf state gesetzt schmiert natürlich nix mehr ab.

                                        Besagte Readings sollte ich auch nicht brauchen.

                                        Das war ein spannender Abend. Vielen Dank für's gemeinsame Debuggen. 😄

                                        Aber jetzt hau ich mich auf's Ohr!

                                        1 Reply Last reply Reply Quote 0
                                        • LausiD
                                          LausiD last edited by

                                          Schau ich mir die Tage mal noch in Ruhe an….

                                          Jo war spannende Geschichte...man lerrnt nie aus 🙂

                                          Mach ich jetzt auch....bis die Tage

                                          Da fällt mir noch was ein:

                                          Unter fhem.0.info.Debug.meta bei Wert Wecker eintragen.

                                          Im ioBroker Log kommen Einträge wie das Device verarbeitet wird

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            aski71 last edited by

                                            Ok. Hab ich mal gemacht.

                                            Ich habe übrigens für den Moment jetzt alles fhem Logging ausgeschaltet.

                                            Muss ich dazu wieder was bestimmtes einschalten?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            536
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            49
                                            2406
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo