Aller au contenu
chelson

Lire des Datagram UDP sur HC3

Recommended Posts

 Hi, 

 

J'essaie de capturer les données "broadcast" UDP envoyées par une Pompe à chaleur grace aux fonction UDP socket de la HC3 ?

Mais cela ne fonctionne pas...

Auriez-vous une idée ?

 

Voici le code d'essai...

 

function QuickApp:onInit()
    self.udp = net.UDPSocket({ 
        broadcast = true,
        timeout = 5000
    })

    local payload = string.char(0x0D,0x0A)
 
    self.udp:sendTo(payload, '102.168.0.110', 1031, {
        success = function()
            self:receiveData()
        end,
        error = function(error)
            self:debug('Error Send:', error)
        end    
    })
end
function QuickApp:receiveData()
    self.udp:receive({
    success = function(data)
        self:debug("Received:",data)
        self:receiveData() -- will read next datagram
    end,
    error = function(error)
        self:error("Error Receive:", error)
    end})
end 

 

The return is 

[02.05.2022] [19:47:45] [ERROR] [QUICKAPP169]: Error Receive: Operation canceled
[02.05.2022] [19:48:24] [ERROR] [QUICKAPP169]: Error Receive: Operation canceled

 

Voici une capture du traffic réseau.

 

image.thumb.png.2566c0e0b40a1abb89515a68e4499ebb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

D'après la capture du trafic, on voit que ta PAC ne répond pas au broadcast (255.255.255.255)

 

Donc enlève :

broadcast = true,

dans ton code LUA

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour ta réactivité (comme d'habitude) Lazer, !

Malheureusement, cela ne change rien ;-(

En fait, la PAC envoie directement des broadcast UDP sur tout le réseau sans qui il soit nécessaire d'envoyer des données.

L'erreur 'Operation canceled' vient de la fonction 'ReceiveData' et pas du 'udpSend'.

En fait j'essaie d'ouvrir la communication UDP antre la PAC et ma HC3 en exécutant en 'udpsend' à l'adresse de la PAC de manière à pouvoir lire ces datagramme UDP avec la HC3. 

 

En résumé, je voudrais juste lire les broadcasts envoyés par la PAC 192.168.0.110 vers 255.255.255.255:1031, les de la PAC ne sont pas envoyée en UDP mai bien en TCP sur le port 4000 (ou via une interface Web)

 

Une autre idée ?

 

Merci 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Dans ce cas, pas certain que la HC3 permette d'écouter les broadcast du réseau, je ne pense pas que ça soit prévu.

 

J'avais bien vu dans ton log que l'erreur provenant du receive(), mais c'est justement parce que la HC3 considère qu'elle ne reçoit rien (malgré les paquets envoyés précédemment) que tu as cette erreur.

Tant que ta PAC enverra en broadcast, tu ne recevras rien dans ton code LUA, car ce n'est pas une réponse à un paquet destiné à la HC3.

 

Mais si tu dis que tu peux communiquer en TCP, pourquoi ne pas utiliser ce protocole ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×