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

      Stausänderung in FHEM?

      Objekt sieht so aus?
      2201_wecker.png

      Also bei mir geht Änderung state in beide Richtungen mit on off mixed

      Einziger Unterschied verwende die Version von github

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

        Ah… da ist mir vorhin schon was aufgefallen:

        Bei state wird im Wert "true" oder "false" angezeigt, statt "on", "off" oder "mixed".

        Im Screenshot fällt mir noch auf:

        Bei sonosSZenabled habe ich Rolle "text" statt "value".
        1107_bildschirmfoto_2018-12-29_um_23.41.48.png

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

          Mh…das ist nicht die aktuelle Version.

          Was steht unter fhem.1.info.Info.buildDate für ein Datum?

          Muss vor 03.12.18 sein, oder?

          von LausiD » 03.12.2018, 00:27

          Hallo zusammen,

          auf github kann der Adapter mit folgenden Änderungen aktualisiert werden

          Da state eines FHEM Device unterschiedliche Zustände/Funktionen haben kann, werden bei Bedarf im ioBroker automatisch zusätzliche Objekte angelegt.

          1. fhem.x.Device.state enthält den Wert aus FHEM 1:1 als String

          a. fhem.x.Device.state_switch true/false als Boolean, wenn state on oder off ist oder Possible Sets on und off enthalten.

          Dadurch kann zB auch ein dummy als Schalter verwendet werden.

          b. fhem.x.Device.state_boolean true/false , wenn state open/ooened/close/closed/present/absent ist.

          c. fhem.x.Device.state_value 0/2 für die Werte von state_boolean

          Damit sollte es in VIS viel einfacher werden 🙂

          2. Objekte mit nummerischen Inhalt werden als number angelegt

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

            6.11.18

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

              Habe vorhin extra nochmal mittels

              npm install iobroker.fhem --production
              

              drüber gebügelt.

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

                Alles klar 🙂

                Mach mal Aktualisierung von github

                Wie steht hier im Kapiel 8 : https://github.com/ioBroker/ioBroker.fh … er/docs/de

                Sorry link war falsch

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

                  Habe es trotzdem gefunden. 🙂

                  Aber schräge Sache: Siehe Screenshot.

                  … und Build Date bleibt trotzdem bei 6.11.18. :shock:
                  1107_bildschirmfoto_2018-12-30_um_00.07.24.png

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

                    Neustart FHEM Adapter?

                    Noch was: Du kannst setlist noch auf "on:noArg off:noArg mixed:noArg" ändern.

                    Damit bekommst du jeweils ein Objekt als button

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

                      Sorry, mein Fehler. Neustart vergessen!

                      Jetzt steht da 17.12.18.

                      Aber: Der Absturz bleibt der gleiche. :shock:

                      Der State scheint jetzt richtig gefüllt zu werden.

                      sonosSZenabled hat weiterhin die Rolle "text"

                      Das mit noArg hab ich noch nicht gemacht.

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

                        Wir kriegen das hin 🙂

                        Entweder fhem.0.info.Configurations.autoRole auf true setzen und Adapter wird automatisch neu gestartet

                        oder das Objekt Wecker löschen und Adapter neu starten

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

                          Ein Schritt weiter:

                          Das Objekt scheint jetzt richtig zu sein.

                          Habe beide Varianten probiert: autoRole auf true.

                          Sync abgewartet.

                          Wecker in fhem geändert.

                          -> Trotzdem Absturz.

                          Danach Objekt Wecker komplett gelöscht.

                          Sync abgewartet.

                          Wecker in fhem geändert.

                          -> Trotzdem Absturz.

                          :shock:

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

                            Mh….du änderst state in FEHM auf on oder off?

                            Kannst du das Script mal deaktivieren?

                            state in ioBroker ändern und Übertrag nach FHEM kontrollieren.

                            state in FHEM ändern und Übertrag nach ioBroker kontrollieren

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

                              Es hat also tatsächlich etwas mit dem Skript zu tun.

                              Wenn das Skript aus ist, passiert der Absturz nicht.

                              1 Reply Last reply Reply Quote 0
                              • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            612
                                            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