Basic domotique avec Phidgets (5 / 10 étapes)

Étape 5: Plus d’infos sur le Code

Le code utilise ajax et json pour la synchronisation de l’interface web pour le SBC et la mangouste pour le serveur web (tant les jquery et mangouste source fichiers nécessaires sont dans le dossier du projet pour vous). Cela permet à la page Web afficher les mises à jour en temps réel de la SBC de manière assez propre.

homeAutomation.c est le cœur de celui-ci, alors commençons là.

Globals

En haut du fichier homeAutomation.c sont les définitions globales. Vous aurez besoin définir le numéro de série de la SBC que vous utilisez, mettez le mot de passe système (celui utilisé pour la connexion à l’interface web), l’index des capteurs et l’index de la lumière que vous êtes commander. Dans ce cas, le numéro de série est 250000, le mot de passe est le mot de passe, le capteur de lumière est sur 0 d’entrée, le capteur de sons est sur entrée 2 et la lumière de la lampe est sur sortie 0.

#define SbcSerial 250000
#define SbcSystemPassword "PASSWORD"
#define LightSensorIndex 0
#define SoundSensorIndex 2
#define Output_Light1Index 0

Lorsque vous ajoutez plusieurs Phidgets, vous pouvez les ajouter aux macros globales aussi bien.

Aussi, nous avons mis quelques numéros d’étalonnage et créé un CPhidgetInterfaceKitHandle global pour nos Sbc, que nous avons nommée McflySbc.

Interpréter les données entrantes et étalonnage

Certaines valeurs de calibration sont également mis en haut. Les valeurs de la cellule photoélectrique changent de Phidget à Phidget alors cocher l’autocollant attaché à la sonde pour le m et b valeurs et ceux en type.

#define LightCalibrationMValue 1.478777
#define LightCalibrationBValue 33.67076

La fonction get_data gère les requêtes ajax-canalisé pour les messages, comme valeurs de capteur. Lors de l’ajout de capteurs plus vous les mettrez dans ce code dans un autre " else if (!strncmp(request_info->query_string, "sound", reqlen))... " comme instruction de condition. Vous pouvez copier et coller les instruments existants et modifier la formule dans le cercle intérieur si déclaration en tant que nécessaire. Consultez le guide de l’utilisateur de l’appareil pour des formules et valeurs, mais les sons et lumière sont déjà faits.

Contrôle de sortie

La fonction set_data envoie des messages à la SBC pour modifier les États de sortie (comme transformer une lumière allumé ou éteint). Requêtes arrivent via Ajax, comme « light1On » et « light1Off » et l’état de sortie approprié est défini sur le SBC. Vous pouvez vous connecter plus de lumières dans ce mode (remplacez le 1 par ordre croissant des numéros), ou d’autre chose que vous voulez contrôler autour de la maison (mais soyez prudent lorsque vous travaillez avec électricité et assurez-vous que vous savez ce que vous faites, ou demandez à quelqu'un qui le fait, avant de jouer avec les courants électriques).

Gestionnaire d’événements

L’event_handler relie le get_data et set_data fonctionne lorsque Ajax obtient un get_data ou send_message demander, respectivement. Rien à perdre son temps ici.

Fixer le Kit d’Interface

SbcAttachmet en place le kit d’interface sur le SBC avec le ratiométrique, affecte le déclencheur du changement capteur 1 pour capteurs ci-joint et le débit de données aussi bien. Lorsque vous ajoutez plus de capteurs que vous devrez les ajouter à la liste et mettre le débit à quelque chose dans les centaines de bas gamme. Pour les entrées ne l’utilisez pas, nous avons mis le débit pour 1000 ms.

Index.html est le visage du programme... comme la plupart des pages web, vous savez comment cela fonctionne.

Nous utilisons jquery et certains css très simples. fichier jquery est disponible en ligne et dans les fichiers source pour ce projet. style.CSS est assez basique, donc il ne sera pas être expliqué ici, mais n’hésitez pas à jouer avec elle ou utiliser votre propre feuille de style. Vous pouvez consulter un tutoriel CSS sur W3 Schools.

Mise en place des requêtes Ajax

Nous commençons avec du javascript qui définit l’intervalle pour les demandes de données de la SBC via Ajax. Tous les capteurs devront être chargé tout de suite et ensuite vérifié périodiquement. Vous pouvez définir différents capteurs d’avoir différents intervalles en mettant dans setInterval différentes méthodes et en changeant le deuxième paramètre est le nombre de millisecondes que vous souhaitez entre les requêtes de données. Vous devez préciser toutes vos sondes un nom unique et descriptif. Notez que dans cet exemple nous allons également à détecter si notre lumière attaché à la SBC est activée ou désactivée.

Nous avons aussi des éléments avec l’ID « light1On » et « light1Off » que, lorsque vous cliquez dessus, nous voulons envoyer une demande via Ajax à la SBC. Nous définissons ici la fonctionnalité onclick. Chaque élément (bouton ou image ou ce que vous voulez changer la sortie) devra son propre ID unique et descriptif.

window.onload = function() {

var turnon1 = document.getElementById("light1On");

var turnoff1 = document.getElementById("light1Off");

turnon1.onclick = function() {

$("light1On").load('/ajax/send_message?light1On');

return false;

}

turnoff1.onclick = function() {

$("light1Off").load('/ajax/send_message?light1Off');

return false;

}

}

Notez que nous gardons le nom de l’id de l’élément (comme « light », « output_light1 » et « light1Off »), le même que le message est envoyé via Ajax pour le programme c. Si le code s’affiche également à la fin de la requête Ajax (c.-à-d. /ajax/get_data?light pour l’élément « feu » et /ajax/send_message?light1On pour l’élément « light1On »). Vous pouvez modifier ces messages et assurez-vous que la variable à la fin de la requête Ajax correspond à ce qui est dans votre programme c, mais vous pouvez imaginer combien déroutant il obtiendrait, alors nous vous suggérons de garder les mêmes.

La page Web Enfin, le corps. Les cellules d’un tableau où nous voulons que les valeurs du capteur soient affichés sont donnés les ID que nous habitués à mettre en place les requêtes ajax. Cela rend afin que leur contenu est mis à jour à chaque nouvelle demande de get_data, décrit un peu plus tôt.

Aussi, les cellules de tableau que nous voulons utiliser pour contrôler les lumières sont donnés les ID appropriés (« light1On » et « light1Off ») afin que lorsqu’ils sont cliqués la fonction onclick envoie la requête Ajax.

Vous pouvez ajouter plusieurs lignes de la table pour les capteurs différents, ce qui donne de la cellule où vous voulez que vos données affichent l’id que vous avez choisi (comme "température", si vous aviez un capteur de température).

Articles Liés

Guide du débutant à l’utilisation de Webhooks pour la domotique avec Prota OS

Guide du débutant à l’utilisation de Webhooks pour la domotique avec Prota OS

TL:DR : webhooks sont faciles à utiliser et mis en place avec OS Prota. Utilisez webhooks pour des centaines de flux de travail bureautique.Apprenez à configurer et utiliser le Prota OS pour Raspberry Pi ici.Télécharger OS Prota Raspberry Pi ici.Quel
HAVOC - domotique avec commande vocale

HAVOC - domotique avec commande vocale

Avant de commencer la description de projet, je tiens à remercier Audrey et Nicole de me présenter au Conseil de Edison Intel avec un tas de capteurs.Dans ce Instructable j'ai utilisé Intel Edison de mettre en œuvre la domotique avec commande vocale
Comment : Ajouter un retour vocal votre domotique avec liez-le un !

Comment : Ajouter un retour vocal votre domotique avec liez-le un !

Bonjour tout le monde,Aujourd'hui je vais vous montrer comment ajouter retour vocal à votre domotique.Ce sera toujours un bon additif pour votre domotique avec lien il un projet car votre ONE Linkit laisserait une rétroaction comme un « J'ai tourné o
Domotique avec nœud js, pi framboise et heimcontrol

Domotique avec nœud js, pi framboise et heimcontrol

Dans tutoriel fera le tour d'utiliser la plate-forme de heimcontrol (est NodeJs demande de domotique Open Source sous licence MIT)Quelques caractéristiques là-bas :Réactivité : le design réactif vous permet un contrôle confortable de vos dispositifs
Domotique avec HomeGenie

Domotique avec HomeGenie

Si vous souhaitez intensifier votre jeu de domotique ? Cherchez pas plus loin ! Beaucoup d'entre nous essayé maison automatisation par méthode ad hoc, maintenant ici est un grand système open source qui donne des bases fiables pour votre prochain pro
Domotique avec émetteur-récepteur RF microcontrôleur Arduino

Domotique avec émetteur-récepteur RF microcontrôleur Arduino

Ce projet démontre la conception et le développement d'une Home Automation System à l'aide de RF émetteur/récepteur commandé par microcontrôleur Arduino. L'utilisateur contrôlera à distance différents appareils intérieurs tels que les ampoules, les p
Serveur domotique avec routeur

Serveur domotique avec routeur

transformer un routeur bon marché un serveur domotique !Ce projet vous permettra de passer des points de vente/feux de votre iPhone ou n'importe quel navigateur.Vous serez également en mesure d'envoyer des commandes série à distance.Ce projet est bas
Domotique avec Intel Edison

Domotique avec Intel Edison

Le but de ce projet c'est activer une sortie lorsque le « UP » est enfoncée sur un émetteur de la télécommande et couper de la même sortie lorsque vous appuyez sur la touche « Bas ». Une telle expérience a diverses applications liées à la domotique.É
Domotique avec un Smartphone (TV, Arduino, lumière, sécurité, projecteur, lecteur DVD...)

Domotique avec un Smartphone (TV, Arduino, lumière, sécurité, projecteur, lecteur DVD...)

Ces jours-ci les dispositifs de la domotique et la maison des systèmes de contrôle sont très populaires. Même dans la communauté de DIY-ers. Donc décidé de faire mon propre dispositif de contrôle domestique en utilisant Arduino. L'appareil peut être
Geste en fonction domotique avec Edison Intel (Intel IoT))

Geste en fonction domotique avec Edison Intel (Intel IoT))

Domotique geste basée est la nouvelle façon d'interagir avec des dispositifs électriques disponibles chez nous. Dans ce projet nous allons utiliser capteurs au lieu de caméra de reconnaissance de geste, car il fournit la meilleure cohérence, indépend
Domotique avec commande vocale Amazon Echo

Domotique avec commande vocale Amazon Echo

Le mois dernier, Amazon a publié l'écho - un petit cylindre capable de reconnaissance vocale puissant.L'écho s'est fermé source. Mais une fois que vous trouver les secrets de l'écho, il devient un outil incroyablement puissant pour la commande vocale
Domotique avec Arduino

Domotique avec Arduino

Dans ce Instructable je vais essayer d'expliquer comment créer un serveur domotique qui ont la possibilité de permettre communs ménagers électriques à brancher à une bande de 5 voies 240VAC/120VAC puissance commune. Dans ma conception, j'ai inclus un
Domotique avec Jetpack

Domotique avec Jetpack

Salut, c'est un système de domotique simple avec bouclier de Jetpack. Nous avons ajouté un module de relais pour le bouclier, pour construire un système de domotique base. Avec l'application ci-dessous vous allume ou éteint une ampoule avec votre sma
Domotique avec ATTiny téléphone portable

Domotique avec ATTiny téléphone portable

Dans notre chalet dans les bois nous n'avons pas une connexion internet fiable. En hiver qu'il fait très froid lorsque nous entrons et il faut quelques heures avant que la maison se réchauffe quand vous allumez le chauffage au sol après que nous inte