LoxoneConfig Start mit letzter Konfiguration - PopUp-Wegklicker :-)

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Xenobiologist
    Lox Guru
    • 15.01.2016
    • 1116

    LoxoneConfig Start mit letzter Konfiguration - PopUp-Wegklicker :-)

    Hallo zusammen,

    ein Skript, das niemand wriklich benötigt, aber ich hatte gerade etwas Langeweile.
    Das Skript startet (ggf. Pfade anpassen) die Loxone-Konfiguration-Software mit der zuletzt gespeicherten Konfigdatei (aus einem angegebenen Ordner) und klickt die StartPopUps weg.
    Des Weiteren läuft es so lange im Hintergrund mit, bis die Instanz der Loxone-Konfig-Software geschlossen wird und klickt weiterhin die nervigen PopUps weg, wenn z.B. eine andere Konfig geladen wird.

    Sprache ist Autoit.

    Zuverlässigere Variante mit Handles:

    Code:
    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <File.au3>
    #include <Date.au3>
    #include <Array.au3>
    
    Opt('WinSearchChildren', 1) ;0=no, 1=search children also
    Opt('WinTextMatchMode', 1) ;1=complete, 2=quick
    Opt('WinTitleMatchMode', 3) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
    
    Global $title1 = 'Loxone Config'
    Global $title2 = 'Projekt Analyse'
    Global $path_ConfigFiles = @UserProfileDir & '\Documents\Loxone\Loxone Config\Projects\'
    Global $path_loxone = @ProgramFilesDir & '\Loxone\LoxoneConfig\LoxoneConfig.exe'
    Global $configFile = getLatestConfigFile($path_ConfigFiles)
    Global $pid_LoxoneConfig = _startLoxoneConfig()
    Global $win_A = 0
    
    _main()
    Exit(0)
    
    Func _main()
        Do
            _closeAnnoyingPopUps()
            Sleep(250)
        Until Not ProcessExists($pid_LoxoneConfig)
        ConsoleWrite(_NowCalc() & 'Konfiguration wurde geschlossen!' & @CRLF)
        Return 1
    EndFunc   ;==>_main
    
    Func _closeAnnoyingPopUps()
        $win_A = _ProcessGetWin($pid_LoxoneConfig)
    ;~ _ArrayDisplay($r)
        For $i = 0 To UBound($win_A) - 1
            If $win_A[$i][0] = 'Loxone Config' And WinActive($win_A[$i][1]) Then ControlSend($win_A[$i][1], '', '', '{ESC}')
            If $win_A[$i][0] = 'Projekt Analyse' And WinActive($win_A[$i][1]) Then ControlSend($win_A[$i][1], '', '', '{ESC}')
        Next
    EndFunc   ;==>_closeAnnoyingPopUps
    
    Func _startLoxoneConfig()
        Local $pid = ShellExecute($path_loxone, '"' & $path_ConfigFiles & '\' & $configFile & '"')
        _closeAnnoyingPopUps()
        ConsoleWrite(_NowCalc() & ' : Gestartet: ' & $path_loxone & ' "' & $path_ConfigFiles & '\' & $configFile & '"' & @CRLF)
        Return $pid
    EndFunc   ;==>_startLoxoneConfig
    
    Func getLatestConfigFile($path_ConfigFiles)
        Local $aFileList = _FileListToArray($path_ConfigFiles, '*.Loxone', $FLTA_FILES, False)
        If @error = 1 Then
            MsgBox($MB_SYSTEMMODAL, '', 'Path was invalid.')
            Exit
        EndIf
        If @error = 4 Then
            MsgBox($MB_SYSTEMMODAL, '', 'No file(s) were found.')
            Exit
        EndIf
    
        Local $re_A[UBound($aFileList)][2]
    
        For $i = 1 To UBound($re_A) - 1
            $re_A[$i][0] = $aFileList[$i]
            $re_A[$i][1] = FileGetTime($path_ConfigFiles & '\' & $aFileList[$i], $FT_MODIFIED, $FT_STRING)
        Next
        _ArraySort($re_A, 1, 0, 0, 1)
    ;~     _ArrayDisplay($re_A)
        If IsArray($re_A) Then Return $re_A[0][0]
        Return -1
    EndFunc   ;==>getLatestConfigFile
    
    Func _ProcessGetWin($iPID = 0, $iOption = -1)
        Local $aList = WinList(), $aTemp
        If Not $iPID Then $iPID = @AutoItPID
        $iPID = ProcessExists($iPID)
        If $iPID = 0 Then Return SetError(1)
        Switch $iOption
            Case 0, 1
                Local $aHWnd[1] = [0]
                For $i = 1 To $aList[0][0]
                    If $iPID = WinGetProcess($aList[$i][1]) Then
                        ReDim $aHWnd[$aHWnd[0] + 2]
                        $aHWnd[0] += 1
                        $aHWnd[$aHWnd[0]] = $aList[$i][$iOption]
                    EndIf
                Next
            Case 2
                Local $aHWnd[1] = [0]
                For $i = 1 To $aList[0][0]
                    If $iPID = WinGetProcess($aList[$i][1]) Then
                        ReDim $aHWnd[$aHWnd[0] + 2]
                        $aHWnd[0] += 1
                        $aTemp = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $aList[$i][1], "wstr", "", "int", 4096)
                        $aHWnd[$aHWnd[0]] = $aTemp[2]
                    EndIf
                Next
            Case Else
                Local $aHWnd[1][3] = [[0]]
                For $i = 1 To $aList[0][0]
                    If $iPID = WinGetProcess($aList[$i][1]) Then
                        ReDim $aHWnd[$aHWnd[0][0] + 2][3]
                        $aHWnd[0][0] += 1
                        $aHWnd[$aHWnd[0][0]][0] = $aList[$i][0]
                        $aHWnd[$aHWnd[0][0]][1] = $aList[$i][1]
                        $aTemp = DllCall("user32.dll", "int", "GetClassNameW", "hwnd", $aList[$i][1], "wstr", "", "int", 4096)
                        $aHWnd[$aHWnd[0][0]][2] = $aTemp[2]
                    EndIf
                Next
        EndSwitch
        Return $aHWnd
    EndFunc   ;==>_ProcessGetWin
    Erste Version: Sollte aber auch funktionieren :-)

    Code:
    #include <FileConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    
    Opt('WinSearchChildren', 1) ;0=no, 1=search children also
    Opt('WinTextMatchMode', 1) ;1=complete, 2=quick
    Opt('WinTitleMatchMode', 3) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
    
    Local $title1 = 'Loxone Config'
    Local $title2 = 'Projekt Analyse'
    Local $path_ConfigFiles = @UserProfileDir & '\Documents\Loxone\Loxone Config\Projects\'
    Local $path_loxone = @ProgramFilesDir & '\Loxone\LoxoneConfig\LoxoneConfig.exe'
    Local $configFile = getLatestConfigFile($path_ConfigFiles)
    Local $pid_LoxoneConfig = _startLoxoneConfig()
    
    Do
    _closeAnnoyingPopUps()
    Sleep(250)
    Until Not ProcessExists($pid_LoxoneConfig)
    
    Func _closeAnnoyingPopUps()
    If WinExists($title1) And WinActive($title1) Then
    WinActivate($title1)
    ;~ ConsoleWrite($title1 & ' gefunden!' & @CRLF)
    Send('{ESC}')
    EndIf
    If WinExists($title2) And WinActive($title2) Then
    WinActivate($title2)
    ;~ ConsoleWrite($title2 & ' gefunden!' & @CRLF)
    Send('{ESC}')
    EndIf
    EndFunc ;==>_closeAnnoyingPopUps
    
    Func _startLoxoneConfig()
    Local $pid = ShellExecute($path_loxone, '"' & $path_ConfigFiles & '\' & $configFile & '"')
    Local $hTitle1 = WinWaitActive($title1, '', 10)
    WinActivate($hTitle1)
    Send('{ESC}')
    Local $hTitle2 = WinWaitActive($title2, '', 3)
    WinActivate($hTitle2)
    Send('{ESC}')
    
    ConsoleWrite('Gestartet: ' & $path_loxone & ' "' & $path_ConfigFiles & '\' & $configFile & '"' & @CRLF)
    Return $pid
    EndFunc ;==>_startLoxoneConfig
    
    Func getLatestConfigFile($path_ConfigFiles)
    Local $aFileList = _FileListToArray($path_ConfigFiles, '*.Loxone', $FLTA_FILES, False)
    If @error = 1 Then
    MsgBox($MB_SYSTEMMODAL, '', 'Path was invalid.')
    Exit
    EndIf
    If @error = 4 Then
    MsgBox($MB_SYSTEMMODAL, '', 'No file(s) were found.')
    Exit
    EndIf
    
    Local $re_A[UBound($aFileList)][2]
    
    For $i = 1 To UBound($re_A) - 1
    $re_A[$i][0] = $aFileList[$i]
    $re_A[$i][1] = FileGetTime($path_ConfigFiles & '\' & $aFileList[$i], $FT_MODIFIED, $FT_STRING)
    Next
    _ArraySort($re_A, 1, 0, 0, 1)
    ;~ _ArrayDisplay($re_A)
    If IsArray($re_A) Then Return $re_A[0][0]
    Return -1
    EndFunc ;==>getLatestConfigFile
    Edit: Neue Version ergänzt.
    Zuletzt geändert von Xenobiologist; 14.01.2018, 20:34.
    Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
    https://www.loxforum.com/forum/germa...d-grafana-visu
    Mit Loxone einen Windows-PC steuern:
    https://www.loxforum.com/forum/faqs-...indows-steuern
  • eisenkarl
    Lox Guru
    • 28.08.2015
    • 1349

    #2
    Das werde ich morgen sofort testen und dann gebe ich dir eine Kiste Zwickel aus!

    Kommentar

    • hismastersvoice
      Supermoderator
      • 25.08.2015
      • 7189

      #3
      Zitat von Xenobiologist
      Hallo zusammen,

      ein Skript, das niemand wriklich benötigt, aber ich hatte gerade etwas Langeweile.
      Und ob man das braucht...
      Die Dinger sind extrem nervig wenn man wie bei mir auf einem Test MiniServer versuche macht. Als ich das 1Wire Plug-in geschrieben und durch getestet habe, hatte ich so die Schnauze voll.

      Kein Support per PN!

      Kommentar

      • eisenkarl
        Lox Guru
        • 28.08.2015
        • 1349

        #4
        Beim Kunden vor Ort ist das eine einzige Vollkatastrophe! Ich wette, dass die Entwickler in Österreich auch eine Möglichkeit haben diesen Scheiß zu unterdrücken! Ich weiß auch nicht, wie oft ich den Arbeitsbereich verschieben muss um Bausteine, die weiter rechts oben angeordnet sind bearbeiten zu können, ohne dass mir dieser Inforotz eingeblendet wird

        Kommentar

        • Xenobiologist
          Lox Guru
          • 15.01.2016
          • 1116

          #5
          Falls es nicht 100%ig zuverlässig funktionieren sollte, dann läßt sich da sicher noch etwas optimieren.
          Gibt es noch weitere Dinge die euch stören bei der Konfiguration? Ggf. kann man das ja noch einbauen. JSON lesen und alle Eingänge auflisten oder ... keine Ahnung was man so braucht wenn man das öfter und auch für Kunden macht.

          Das mit den Bausteinen oben rechts musst du mir erklären.


          Gesendet von iPhone mit Tapatalk
          Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
          https://www.loxforum.com/forum/germa...d-grafana-visu
          Mit Loxone einen Windows-PC steuern:
          https://www.loxforum.com/forum/faqs-...indows-steuern

          Kommentar

          • Xenobiologist
            Lox Guru
            • 15.01.2016
            • 1116

            #6
            So, ich habe noch mal an der Fenstererkennung geschraubt und es auf Handles umgstellt. (Siehe erster Post).
            Hilft es euch weiter? Habt ihr euch das so vorgestellt?
            Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
            https://www.loxforum.com/forum/germa...d-grafana-visu
            Mit Loxone einen Windows-PC steuern:
            https://www.loxforum.com/forum/faqs-...indows-steuern

            Kommentar

            • romildo
              Lebende Foren Legende
              • 25.08.2015
              • 5126

              #7
              Zitat von Xenobiologist
              ..Das mit den Bausteinen oben rechts musst du mir erklären...
              Ich denke er meint dies hier:
              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Infofenster1.png
Ansichten: 588
Größe: 28,5 KB
ID: 138362

              Da gibt es noch einiges in der Config welches meiner Meinung nach seitens Loxone einstellbar gemacht werden sollte.





              lg Romildo

              Kommentar


              • Xenobiologist
                Xenobiologist kommentierte
                Kommentar bearbeiten
                Geht es darum den ToolTip zu unterdrücken? Scrollen zu können? Man kann die Ansicht ja zoomen, ggf. reicht das ja schon.

              • romildo
                romildo kommentierte
                Kommentar bearbeiten
                Das müsste eisenkarl sagen. Ich vermute mal er möchte diesen "ToolTip" abschalten.
                Man kann das Fenster auch verschieben. Möchte man das?

                Es ist genauso nervig wie das ständige automatisierte Herumspringen des Zoombereichs.
                Ich weiss dass das früher auch schon mal so war, dann nach vielen Reklamationen endlich behoben wurde und trotzdem nun wieder vorhanden ist.
                Ich möchte eine Lösung von Loxone auch wenn ich weiss, dass es diese nicht geben wird.
                Bitte aber diesbezüglich keine neue Diskussion führen.

              • Xenobiologist
                Xenobiologist kommentierte
                Kommentar bearbeiten
                OKay, ist mir so nicht negativ aufgefallen. Ich hätte manchmal gern, dass man Controls vom F11 (auto-position) ausnehmen kann.
            • hismastersvoice
              Supermoderator
              • 25.08.2015
              • 7189

              #8
              Zitat von romildo

              Da gibt es noch einiges in der Config welches meiner Meinung nach seitens Loxone einstellbar gemacht werden sollte.
              Ich habe Loxone schon 2x diesbezüglich angeschrieben und einmal angerufen.
              Sie bleiben hartnäckig dabei das man nichts einstellbar macht. Sie sehen dass als Hilfen die *jeder* braucht.

              Sehr uneinsichtig die Jungs, aber wie kennen es ja schon.
              Kein Support per PN!

              Kommentar

              • Thomas M.
                Lebende Foren Legende
                • 25.08.2015
                • 3242

                #9
                Ich denke du musst das "globaler" sehen.
                Wir hier sind genervt über die Geschichte, die meisten hier wissen was sie tun.

                Andere haben blödsinnige Fehler im Programm eingebaut, wissen es nicht mal und benötigen den support.
                So werden sie gezwungen, beim Config-Start einen "Zeigefinger" anzuschauen, der auf den/die Fehler zeigt.

                Auch ich hatte unsinnige Fehler im Programm, von denen ich selbst nichts wusste.
                So nervig wie das auch sein mag, hat bestimmt jeder einzelne von uns irgendwelche Fehler nur wegen der Projektanalyse ausgemerzt.

                Kommentar


                • hismastersvoice
                  hismastersvoice kommentierte
                  Kommentar bearbeiten
                  Klar hat es auch bei mir den ein oder anderen Fehler gezeigt, und die Programmierung wie wenn man sich dann hält auch sauberer. Nur gibt es eben auch Dinge die Loxone als Fehler sieht die ich nicht ändern will.

                  Es geht doch darum es abstellen zu können und nicht um es abzuschaffen.
                  Wenn ich mein Projekt prüfen will kann ich es ja aktiv machen. Aber das bei jedem Start ist jedem Programm Download aus dem MS diese zwei Fenster kommen ist nervig.

                  Vor allem weil das erste Fenster überhaupt keinen Mehrwert hat.
              • Xenobiologist
                Lox Guru
                • 15.01.2016
                • 1116

                #10
                Falls jemand Fragen hat, wie man das Skript startet/ausprobiert, oder wie man daraus eine standalone exe kompiliert/macht, dann kann ich das gern erklären. Weiß nicht, inwiefern Autoit bekannt ist.


                Gesendet von iPhone mit Tapatalk
                Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
                https://www.loxforum.com/forum/germa...d-grafana-visu
                Mit Loxone einen Windows-PC steuern:
                https://www.loxforum.com/forum/faqs-...indows-steuern

                Kommentar


                • sonorobby
                  sonorobby kommentierte
                  Kommentar bearbeiten
                  das wäre super! kenne mich damit garnicht aus, kenne das nur aus dem firefox plugin für paar spielerein...

                • miqa
                  miqa kommentierte
                  Kommentar bearbeiten
                  Erklärung wäre super.

                • Xenobiologist
                  Xenobiologist kommentierte
                  Kommentar bearbeiten
                  Reicht euch dies? https://www.autoitscript.com/site/au.../installation/
                  Die Beta braucht ihr nicht. Eine exe macht ihr aus einem Skript mit (In Scite4Autoit - IDE) Tools -> Compile.
                  Fertig.
              • sonorobby
                LoxBus Spammer
                • 26.08.2015
                • 317

                #11
                Okay Danke funktioniert. Habe es mit einem anderen Pfad Laufwerk D:\ probiert damit geht es dann nicht. Muss vor dem D noch was stehen?

                Kommentar


                • Xenobiologist
                  Xenobiologist kommentierte
                  Kommentar bearbeiten
                  Was genau hast du wie angepasst? Bzw. was willst du erreichen?

                • sonorobby
                  sonorobby kommentierte
                  Kommentar bearbeiten
                  Ich möchte meine Configfiles die ich auf Laufwerk D:/ habe (separater Festplatte) starten anstatt von C:/.
                  Hatte es in deinem Script
                  Global $path_ConfigFiles = @UserProfileDir & '\Documents\Loxone\Loxone Config\Projects\'

                  Mit
                  Global $path_ConfigFiles = @UserProfileDir & 'D:\Documents\Loxone\Config'
                  Probiert

                • Xenobiologist
                  Xenobiologist kommentierte
                  Kommentar bearbeiten
                  Das Macro @UserProfileDir wird zur Laufzeit ersetzt durch den Pfad zum Profilordner des angemeldeten Benutzers. z.B. -> C:\Users\DEIN_USER
                  Kommentiere die Zeile einfach aus mit einem ; davor und setz die Variable $path_ConfigFiles = auf dein Verzeichnis auf Laufwerk d:\

                  Ungefähr so:

                  ;~ Local $path_ConfigFiles = @UserProfileDir & '\Documents\Loxone\Loxone Config\Projects\'
                  Local $path_ConfigFiles = 'D:\DEIN_VERZEICHNIS\UNTERVERZEICHNIS\'
              • Xenobiologist
                Lox Guru
                • 15.01.2016
                • 1116

                #12
                Zitat von romildo
                Ich denke er meint dies hier:
                Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Infofenster1.png Ansichten: 1 Größe: 28,5 KB ID: 138362

                Da gibt es noch einiges in der Config welches meiner Meinung nach seitens Loxone einstellbar gemacht werden sollte.
                Ich habe mir das mal angeschaut. Ich kann durch das Infofenster einfach "durchklicken". Somit muss ich nichts verschieben, selbst wenn der ToolTip über dem Ausgang o.ä. liegt.
                Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
                https://www.loxforum.com/forum/germa...d-grafana-visu
                Mit Loxone einen Windows-PC steuern:
                https://www.loxforum.com/forum/faqs-...indows-steuern

                Kommentar


                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Die Antwort könnte von Loxone sein.
                  Ich möchte das Infofenster abschaltbar haben, als Antwort dann, nein das braucht es nicht.

                  Die Antwort von mir aber bitte nicht ernst nehmen, ist nur so zum Spass gemeint.
                  Zuletzt geändert von romildo; 26.01.2018, 10:42.

                • Xenobiologist
                  Xenobiologist kommentierte
                  Kommentar bearbeiten
                  Soll ich mal gucken, ob ich sämtliche ToolTip-Fenster auch direkt schließen kann?

                • romildo
                  romildo kommentierte
                  Kommentar bearbeiten
                  Wegen mir brauchst Du da nichts zu machen, da ich Dein Script, zumindest vorläufig, nicht verwenden werde.
                  Möglicherweise hätte aber eisenkarl, oder auch andere, Interesse daran.
              • eisenkarl
                Lox Guru
                • 28.08.2015
                • 1349

                #13
                Also ich kann keinen Baustein anhängen, wenn der Tooltip über den Ausgängen liegt und da ich ein 14“ HP Notebook vor Ort benutze muss ich ständig verschieben... Mich nervt der Tooltip!

                Kommentar

                • Xenobiologist
                  Lox Guru
                  • 15.01.2016
                  • 1116

                  #14
                  Zitat von eisenkarl
                  Also ich kann keinen Baustein anhängen, wenn der Tooltip über den Ausgängen liegt und da ich ein 14“ HP Notebook vor Ort benutze muss ich ständig verschieben... Mich nervt der Tooltip!
                  Die LoxoneConfig ist in C++ geschrieben. Ich werde mal gucken, ob ich an die Sachen rankomme.


                  Gesendet von iPhone mit Tapatalk
                  Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
                  https://www.loxforum.com/forum/germa...d-grafana-visu
                  Mit Loxone einen Windows-PC steuern:
                  https://www.loxforum.com/forum/faqs-...indows-steuern

                  Kommentar

                  • hismastersvoice
                    Supermoderator
                    • 25.08.2015
                    • 7189

                    #15
                    In der neusten Beta hat Loxone dazu gelernt...
                    Es gibt jetzt einen "Ignorieren Button"

                    Wenigstens etwas... Wenn man es schon nicht abstellen kann.

                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 2018-01-28_16-26-09.png
Ansichten: 415
Größe: 5,1 KB
ID: 140473
                    Kein Support per PN!

                    Kommentar

                    Lädt...