Voilà quelque éléments pour ton projet.
- Une carte au tableau pour actionner les relais et télérupteurs (j'ai pas donc ne peut t'aider)
- Une carte par pièce dont tu souhaites remonter des données (température, hygrométrie, luminosité, mouvement)
Attention avec le POE, une carte Arduino ne supporte pas le survoltage (j'en ai grillé une en 2 secondes en lui envoyant du 30v

)

Inversement, si elle n'a pas assez d'ampérage, elle reboote dès qu'un capteur ou actuateur se met en marche (et tu ne peux le voir, sauf à regarder la LED principale ou à faire du pooling dessus)
Tu es aussi limité à à peu près 60 m en réalité (et avec du bon câble). En 12V au départ, il ne restera peut-être pas grand chose à l'arrivée. Si tu monte la tension, il faut la rabaisser avant d'alimenter l'arduino. Mais une tension haute va aussi faire vieillir le câble
Coté langage C, ce n'est que du C de base, et tu n'as qu'à gérer le signal Haut (ON) ou Bas (OFF)
La partie décisionnelle se fera sur ton application sur le PC
Choisis bien tes capteurs, les plus simples ne sont pas forcément les meilleurs car il faut ajouter des drivers.
Les meilleurs ont leur propre chipset et utilisent les commandes AT ou des commandes bus.
Coté PC, ton application en PB va gérer l'envoi et la réception vers l'interface Ethernet des arduinos, par commandes via HTTP
Voilà un test que j'ai fait ce jour
Arduino Uno + Ethernet shield (la 1)
Dernière cuvée de l'IDE
https://www.arduino.cc/en/Main/Software 1.8.7
J'ai uploadé dans la carte ce code en changeant juste @IP et @Mac (au dos de la carte)
https://www.arduino.cc/en/Tutorial/WebServer
Puis j'ai simplement ouvert mon navigateur sur l'@ de la carte et je reçois ceci:
analog input 0 is 779
analog input 1 is 607
analog input 2 is 498
analog input 3 is 418
analog input 4 is 1023
analog input 5 is 1023
Donc le serveur de la carte envoie bien les données.
(Dans mon test, seule les pins 4 et 5 sont connectées. Une sur une sonde de baromètre l'autre sur un thermomètre)
(avec un
BMP085 de Sparkfun) (remplacé depuis)
(Ici les valeurs sont fictives car je n'ai pas inséré le code de pilotage de la sonde elle-même)
Donc, la communication arduino -> ethernet -> réseau fonctionne déjà
Maintenant, let's go to PureBasic et causons un peu directement à cette carte grâce à cette merveilleuse nouvelle fonction de WebService (HttpRequest). Pas besoin d'utiliser les fonctions serveur ou client.
On peut aussi le faire avec ReceiveHTTPFile()
Code : Tout sélectionner
EnableExplicit
InitNetwork()
Define HttpRequest = HTTPRequest(#PB_HTTP_Get, "http://192.168.0.60")
If HttpRequest
Define HTTP_Data$ = HTTPInfo(HTTPRequest, #PB_HTTP_Response)
Define HTTP_Code$ = HTTPInfo(HTTPRequest, #PB_HTTP_ErrorCode)
If HTTP_Code$ = "200" ; OK
Debug HTTP_Data$
Else
Debug "Erreur serveur : " + HTTP_Code$
EndIf
EndIf
End
Debug:
Code : Tout sélectionner
<!DOCTYPE HTML>
<html>
analog input 0 is 844<br />
analog input 1 is 676<br />
analog input 2 is 543<br />
analog input 3 is 445<br />
analog input 4 is 1023<br />
analog input 5 is 1023<br />
</html>
On reçoit donc bien le code source de la page.

Et voilà! réalisation du prototype en moins de temps qu'il n'en faut pour livrer une pizza
Il ne resterait plus qu'à extraire l'info utile et à s'en servir pour le gadget souhaité
Ensuite, reste à étudier la communication dans l'autre sens PB -> Ethernet -> Arduino pour actionner des matériels non gérés par le tableau central (ex: écran LCD)
[Edit]
Une page très intéressante que je viens de trouver
Voir la partie analyse de la requête
https://eskimon.fr/tuto-arduino-803-ard ... qu%C3%AAte
(ouvrir le port série dès que connecté pour voir le debug)
Exemple, si j'ouvre un navigateur ou que j'envoie une requête via une application PureBasic
http://192.168.0.60/?a=1&b=2&c=3
La carte arduino reçoit (entre autre) l'URL du client, avec tous les paramètres.
GET
/?a=1&b=2&c=3 HTTP/1.1
Il suffit d'isoler le deuxième champs (/?a=1&b=2&c=3) et d'utiliser les valeurs pour faire agir les actuateurs (ex: digitalWrite())
Voilà, ce sera tout pour aujourd'hui, j'espère que ça peut t'aider un peu.
