From 082924de8a6d3eb1b94524cf58c5b87ce34e95ee Mon Sep 17 00:00:00 2001 From: Ellert <> Date: Sun, 24 Dec 2023 14:23:15 +0000 Subject: [PATCH] 74_AutomowerConnect: Commandref corrections, fix start up warning, improve attribute disableForIntervalls handling git-svn-id: https://svn.fhem.de/fhem/trunk@28310 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 2 ++ fhem/FHEM/74_AutomowerConnect.pm | 16 +++++++------- fhem/lib/FHEM/Devices/AMConnect/Common.pm | 27 ++++++++++++++++++++--- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 7884e38ae..632ad14cf 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - bugfix: 74_AutomowerConnect: Commandref corrections, fix start up warning + improve disableForIntervalls handling - bugfix: 36_Shelly: store newkeys in helper after init - feature: 36_Shelly: Add Gen3 Mini devices (fw gen2 compatibility) Roller devices: use 'set ... pos' equivalent to 'pct' diff --git a/fhem/FHEM/74_AutomowerConnect.pm b/fhem/FHEM/74_AutomowerConnect.pm index 8bd03fbf6..e85dc282c 100644 --- a/fhem/FHEM/74_AutomowerConnect.pm +++ b/fhem/FHEM/74_AutomowerConnect.pm @@ -498,8 +498,8 @@ __END__ Anforderungen

@@ -511,7 +511,7 @@ __END__ Beispiel:
define myMower AutomowerConnect 123456789012345678901234567890123456 Erstes Gerät: die Defaultmähernummer ist 0.
Es muss ein client_secret gesetzt werden. Es ist das Application Secret vom Husqvarna Developer Portal.
- set myMower <client secret>
+ set myMower client_secret <client secret>


@@ -537,7 +537,7 @@ __END__
  • ResumeSchedule
    set <name> ResumeSchedule
    - Startet im geplanten Interval den Mäher sofort, sonst zum nächsten geplanten Zeitpunkt
  • + Startet im geplanten Intervall den Mäher sofort, sonst zum nächsten geplanten Zeitpunkt
  • Start
    set <name> Start <number of minutes>
    @@ -582,7 +582,7 @@ __END__
  • mowerScheduleToAttribute
    set <name> mowerScheduleToAttribute
    - Schreibt den Mähplan ins Attribut moverSchedule.
  • + Schreibt den Mähplan ins Attribut mowerSchedule.
  • sendScheduleFromAttributeToMower
    set <name> sendScheduleFromAttributeToMower
    @@ -616,7 +616,7 @@ __END__
  • MowerData
    get <name> MowerData
    - Listet alle Daten des Mähers einschließlich Hashpfad auf ausgenommen das Positonsarray. Der Hashpfad kann zur Erzeugung von userReadings genutzt werden, getriggert wird durch e.g. device_state: connected oder mower_wsEvent: <status-event|positions-event|settings-event>.
    + Listet alle Daten des Mähers einschließlich Hashpfad auf, ausgenommen das Positonsarray. Der Hashpfad kann zur Erzeugung von userReadings genutzt werden, getriggert wird durch e.g. device_state: connected oder mower_wsEvent: <status-event|positions-event|settings-event>.
    Beispiel: erzeugen des Reading serialnumber mit dem Hashpfad $hash->{helper}{mower}{attributes}{system}{serialNumber}

    attr <name> userReadings serialnumber:connected {$defs{$name}->{helper}{mower}{attributes}{system}{serialNumber}}
  • @@ -668,13 +668,13 @@ __END__
  • mapImageCoordinatesToRegister
    attr <name> mapImageCoordinatesToRegister <upper left longitude><space><upper left latitude><line feed><lower right longitude><space><lower right latitude>
    - Obere linke und untere rechte Ecke der Fläche auf der Erde, die durch das Bild dargestellt wird um das Bild auf der Fläche zu registrieren (oder einzupassen).
    + Obere linke und untere rechte Ecke der Fläche auf der Erde, die durch das Bild dargestellt wird, um das Bild auf der Fläche zu registrieren (oder einzupassen).
    Format: Zeilenweise Paare von Longitude- u. Latitudewerten getrennt durch 1 Leerzeichen. Die Zeilen werden aufgeteilt durch (/\s|\R$/).
    Angabe der WGS84 (GPS) Koordinaten muss als Dezimalgrad erfolgen.
  • mapImageCoordinatesUTM
    attr <name> mapImageCoordinatesUTM <upper left longitude><space><upper left latitude><line feed><lower right longitude><space><lower right latitude>
    - Obere linke und untere rechte Ecke der Fläche auf der Erde, die durch das Bild dargestellt wird um das Bild auf der Fläche zu registrieren (oder einzupassen).
    + Obere linke und untere rechte Ecke der Fläche auf der Erde, die durch das Bild dargestellt wird, um das Bild auf der Fläche zu registrieren (oder einzupassen).
    Format: Zeilenweise Paare von Longitude- u. Latitudewerten getrennt durch 1 Leerzeichen. Die Zeilen werden aufgeteilt durch (/\s|\R$/).
    Die Angabe der UTM Koordinaten muss als Dezimalzahl in Meter erfolgen.
    Das Attribut muss nach dem Attribut mapImageCoordinatesToRegister gesetzt werden.
    diff --git a/fhem/lib/FHEM/Devices/AMConnect/Common.pm b/fhem/lib/FHEM/Devices/AMConnect/Common.pm index ad318dae4..911f3216f 100644 --- a/fhem/lib/FHEM/Devices/AMConnect/Common.pm +++ b/fhem/lib/FHEM/Devices/AMConnect/Common.pm @@ -457,7 +457,7 @@ sub FW_detailFn { my ($FW_wname, $name, $room, $pageHash) = @_; # pageHash is set for summaryFn. my $hash = $defs{$name}; my $type = $hash->{TYPE}; - return '' if( AttrVal($name, 'disable', 0) || !AttrVal($name, 'showMap', 1) ); + return '' if( AttrVal($name, 'disable', 0) || !AttrVal($name, 'showMap', 1) || !$::init_done ); my $img = "$FW_ME/$type/$name/map"; my $zoom=AttrVal( $name,"mapImageZoom", 0.7 ); @@ -633,9 +633,18 @@ sub APIAuth { my $type = $hash->{TYPE}; my $iam = "$type $name APIAuth:"; - if( IsDisabled( $name ) ) { + if ( IsDisabled( $name ) ) { + + if ( IsDisabled( $name ) == 1 and ReadingsVal( $name, 'device_state', '' ) ne 'disabled' ) { + + readingsSingleUpdate( $hash, 'device_state', 'disabled', 1 ); + + } elsif ( IsDisabled( $name ) == 2 and ReadingsVal( $name, 'device_state', '' ) ne 'temporarily disabled' ) { + + readingsSingleUpdate( $hash, 'device_state', 'temporarily disabled', 1 ); + + } - readingsSingleUpdate( $hash, 'device_state', 'temporarily disabled', 1 ) if ( ReadingsVal( $name, 'device_state', '' ) !~ /disabled/ ); RemoveInternalTimer( $hash ); InternalTimer( gettimeofday() + $hash->{helper}{retry_interval_apiauth}, \&APIAuth, $hash, 0 ); return undef; @@ -1323,6 +1332,7 @@ sub Attr { my $hash = $defs{$name}; my $type = $hash->{TYPE}; my $iam = "$type $name Attr:"; + ########## if( $attrName eq "disable" ) { if( $cmd eq "set" and $attrVal eq "1" ) { @@ -2600,6 +2610,17 @@ sub FmtDateTimeGMT { sub wsKeepAlive { my ($hash) = @_; + my $name = $hash->{NAME}; + + if ( IsDisabled( $name ) == 2 ) { + + RemoveInternalTimer( $hash ); + DevIo_CloseDev( $hash ) if ( DevIo_IsOpen( $hash ) ); + DevIo_setStates( $hash, "closed" ); + InternalTimer( gettimeofday() + 1, \&APIAuth, $hash, 0 ); + + } + RemoveInternalTimer( $hash, \&wsKeepAlive); DevIo_Ping($hash); InternalTimer(gettimeofday() + $hash->{helper}{interval_ping}, \&wsKeepAlive, $hash, 0);