Driver_RFXtrx

Pour parler de tous les Problèmes/Bugs, Questions, Informations ... en rapport avec les drivers existants : Plcbus, X10, 1-Wire, Rfxcom, Zibase...

Modérateur: HoMIDoM

Driver_RFXtrx

Messagede jptools » 19 Juil 2017, 13:14

Bonjour,

Etant bombardé par des erreurs du type "19/07/2017 13:37:42 ERREUR DRIVER RFXtrx Device non trouvé : 0DEAA5A-1:OFF"
provenant des composants du voisinage.

J'ai modifié le code pour pouvoir garder la même config (coche "Erreur" activé pour le log) sans être importuné par les composants du voisinage.

Il suffit pour cela d'inclure le composant dans la liste des "nouveaux composants" et de cocher "Ignorer" pour ne plus voir s'afficher des messages d'erreurs
concernant ce composant.

Code: Tout sélectionner
Private Sub WriteRetour(ByVal adresse As String, ByVal type As String, ByVal valeur As String)
        Try
            'Forcer le .
            'Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
            'My.Application.ChangeCulture("en-US")

            'log tous les paquets en mode debug
            If _DEBUG Then WriteLog("DBG: WriteRetour : receive from " & adresse & " (" & type & ") -> " & valeur)

            If Not _IsConnect Then Exit Sub 'si on ferme le port on quitte
            If DateTime.Now < DateAdd(DateInterval.Second, 6, dateheurelancement) Then Exit Sub 'on ne traite rien pendant les 6 premieres secondes

            'Recherche si un device affectĂ©
            Dim listedevices As New ArrayList
            listedevices = _Server.ReturnDeviceByAdresse1TypeDriver(_IdSrv, adresse, type, Me._ID, True)
            If IsNothing(listedevices) Then
                WriteLog("ERR: Communication impossible avec le serveur, l'IDsrv est peut ĂŞtre erronĂ© : " & _IdSrv)
                Exit Sub
            End If
            If (listedevices.Count = 1) Then
                'un device trouvĂ©
                If STRGS.InStr(valeur, "CFG:") > 0 Then
                    'c'est un message de config, on log juste
                    WriteLog(listedevices.Item(0).name & " : " & valeur)
                Else
                    'on maj la value si la durĂ©e entre les deux receptions est > Ă  1.5s
                    If (DateTime.Now - Date.Parse(listedevices.Item(0).LastChange)).TotalMilliseconds > 1500 Then
                        If valeur = "ON" Then
                            If TypeOf listedevices.Item(0).Value Is Boolean Then
                                listedevices.Item(0).Value = True
                            ElseIf TypeOf listedevices.Item(0).Value Is Long Or TypeOf listedevices.Item(0).Value Is Integer Then
                                listedevices.Item(0).Value = 100
                            Else
                                listedevices.Item(0).Value = "ON"
                            End If
                        ElseIf valeur = "OFF" Then
                            If TypeOf listedevices.Item(0).Value Is Boolean Then
                                listedevices.Item(0).Value = False
                            ElseIf TypeOf listedevices.Item(0).Value Is Long Or TypeOf listedevices.Item(0).Value Is Integer Then
                                listedevices.Item(0).Value = 0
                            Else
                                listedevices.Item(0).Value = "OFF"
                            End If
                        ElseIf valeur = "PANIC" Or valeur = "ALARM" Or valeur = "ALARM DELAYED" Or valeur = "ALARM + TAMPER" Or valeur = "ALARM DELAYED + TAMPER" Or valeur = "MOTION" Or valeur = "MOTION + TAMPER" Then
                            If TypeOf listedevices.Item(0).Value Is Boolean Then
                                listedevices.Item(0).Value = True
                            ElseIf TypeOf listedevices.Item(0).Value Is Long Or TypeOf listedevices.Item(0).Value Is Integer Then
                                listedevices.Item(0).Value = 1
                            Else
                                listedevices.Item(0).Value = valeur
                            End If
                        ElseIf valeur = "NORMAL" Or valeur = "NORMAL + TAMPER" Or valeur = "NORMAL DELAYED + TAMPER" Or valeur = "NORMAL DELAYED" Or valeur = "NO MOTION" Or valeur = "NO MOTION + TAMPER" Or valeur = "PANIC END" Then
                            If TypeOf listedevices.Item(0).Value Is Boolean Then
                                listedevices.Item(0).Value = False
                            ElseIf TypeOf listedevices.Item(0).Value Is Long Or TypeOf listedevices.Item(0).Value Is Integer Then
                                listedevices.Item(0).Value = 0
                            Else
                                listedevices.Item(0).Value = valeur
                            End If
                        Else
                            listedevices.Item(0).Value = valeur
                        End If
                    Else
                        WriteLog("DBG: Reception < 1.5s de deux valeurs pour le meme composant : " & listedevices.Item(0).name & ":" & valeur)
                    End If
                End If
            ElseIf (listedevices.Count > 1) Then
                WriteLog("ERR: Plusieurs devices correspondent Ă  : " & type & " " & adresse & ":" & valeur)
            Else

                '******************Modif du code**********************
                ' VĂ©rifie que le composant n'a pas dĂ©ja Ă©tĂ© ajoutĂ© Ă  la liste des nouveaux composants.
                Dim m_newDevice As HoMIDom.HoMIDom.NewDevice =
                    (From dev In _Server.GetAllNewDevice() _
                        Where dev.IdDriver = Me.ID _
                        And dev.Adresse1 = adresse _
                        And dev.Type = type).FirstOrDefault()

                If (m_newDevice Is Nothing) Then  ' Non trouvĂ© :CrĂ©ation du composant

                    'si autodiscover = true ou modedecouverte du serveur actif alors on crĂ©e le composant sinon
                    If _AutoDiscover Or _Server.GetModeDecouverte Then
                        WriteLog("DBG: Device non trouvĂ©, AutoCreation du composant : " & type & " " & adresse & ":" & valeur)
                        _Server.AddDetectNewDevice(adresse, _ID, type, "", valeur)
                    Else
                        WriteLog("ERR: Device non trouvĂ© : " & type & " " & adresse & ":" & valeur)
                    End If               
                Else
                    If m_newDevice.Ignore = False Then   'Device trouvĂ© dans New Device, afficher Erreur si ignorer n'est pas cochĂ©
                        WriteLog("ERR: Device trouvĂ© dans la liste des nouveaux composants : " & type & " " & adresse & ":" & valeur)
                    End If
                End If
                '**************Fin Modif**********************

            ''si autodiscover = true alors on crĂ©e le composant sinon on logue
            'If _AutoDiscover Then
            '    If type = "" Then
            '        WriteLog("ERR: Device non trouvĂ©, AutoCreation impossible du composant car le type ne peut etre dĂ©terminĂ© : " & adresse & ":" & valeur)
            '    Else
            '        Try
            '            WriteLog("Device non trouvĂ©, AutoCreation du composant : " & type & " " & adresse & ":" & valeur)
            '            _Server.SaveDevice(_IdSrv, "", "_RFXtrx_" & Date.Now.ToString("ddMMyyHHmmssf"), adresse, True, False, Me._ID, type, 0, "", "", "", "AutoDiscover RFXtrx", 0, False, "0", "", 0, 999999, -999999, 0, Nothing, "", 0, False)
            '        Catch ex As Exception
            '            WriteLog("ERR: Writeretour Exception : AutoDiscover Creation composant: " & ex.Message)
            '        End Try
            '    End If
            'Else
            '    WriteLog("ERR: Device non trouvĂ© : " & type & " " & adresse & ":" & valeur)
            'End If
            '
            ''Ajouter la gestion des composants bannis (si dans la liste des composant bannis alors on log en debug sinon onlog device non trouve empty)

            End If
            listedevices = Nothing
        Catch ex As Exception
            WriteLog("ERR: Writeretour Exception : " & ex.Message)
        End Try
    End Sub


Si les développeurs souhaitent l'inclure dans le code

Jean Pierre
jptools
P'tit Guru de domotique
 
Messages: 69
Inscription: 05 FĂ©v 2015, 19:46

Retourner vers Drivers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique