Décodage de l'état binaire de contrôleurs domotiques – code source libre

Domotique , Building Management ehouse – Décoder le statut de contrôleurs à microprocesseur
Domotique reçu par le panneau de commande connecté au LAN ou WiFi , via UDP (User Datagram Protocol) .
Le statut de cadre standard de réception sous forme binaire , avec Contrôleurs a été discuté dans l'article ” Intelligent ehouse bâtiment d'état du contrôleur paquet ” .
Décodage de la trame doit analyser chaque bit de données de paquet .
En plus , chaque type de contrôleur:

  • RoomManager
  • ExternalManager
  • Gestionnaire de chaleur
  • InputExtender
  • CommManager
  • LevelManager
  • EthernetRoomManager

Ont une différence de quantité d'entrées numériques , entrées de mesure , sorties numériques , gradateurs , fonctions de surveillance et d'algorithmes qui résultent , que les données dans la trame standard muter en fonction du type de contrôleur .
Il en résulte la nécessité pour le décodage du bit par bit pour chaque type de contrôleur indépendamment .
Dans le cas de la mise en œuvre de tous les types de contrôleurs à microprocesseur pour créer et tester l'algorithme de décodage cadre peut prendre jusqu'à 1 mois .
Pour minimiser ce temps au minimum , pour faciliter prêt à présenter l'algorithme emprunté à ehouse . application exe , à décoder automatiquement toutes les informations de l'automate et les données de charge dans les gabarits de l'écran tactile (pour les tablettes) Windows XP , Vue , 7 , 8 .
Après le chargement automatique des données dans les bibliothèques logicielles ehouse , avec quelques lignes de code , vous pouvez créer votre propre système ehouse algorithmes de contrôle en quelques minutes .
Cadre logiciel de décodage binaire de la norme ehouse statut est mis en œuvre dans la bibliothèque de modèle de panneau . Il faut faire binaire , pour le décodage statut directe des contrôleurs Ethernet sans ehouse . Supervisera l'application exe .
Décodage de la trame entière (pour les contrôleurs à microprocesseur eHouse1 RM , EM , HM) est réalisée par la fonction set_rm procédure (str: array_of_char ; TCP_INDEX_INC: entier) ;
paramètres sont des fonctions de l'état de tampon et de décalage (offset) . Le tampon contient toutes les données reçues en provenance du statut . Décalage dépend du type de transmission (adresse étendue , normal , et d'autres applications futures dépendent des algorithmes de communication) .
Il remplit automatiquement le statut tableau pour chaque contrôleur individuellement et peuvent alors manipuler directement les données ou les données de mise à jour automatique sur des panneaux à écran tactile .
Cette fonction est activée en cas de procédure de recevoir des données de socket UDP composant (TNMUDP – appelé binaire) en cas onDataReceived .
La réception est le suivant:
procédure TForm1 . binaryDataReceived (Sender: TComponent ;
NumberBytes: Entier ; FromIP: String ; Port: Integer) ;
var C: array [0 . . 1024] de char ;
MyStream: TMemoryStream ;
commencer
si filesystem_status puis quittez ; / / Si aucun système de fichiers filesystem_status
MyStream: = TMemoryStream . Créer ; / / Création d'un flux de données
binaire . ReadStream (MyStream) ; / / Lecture du flux de données
MyStream . Lire (C [0] , NumberBytes) ; / / Charge le tampon C
set_rm (C , 1) ; / / Convertit les données binaires et les charges des registres rm [index] pour les contrôleurs ehouse 1
Test_save ; / / Test enregistrer la sortie dans un fichier texte pour une utilisation facile
update_panel ; / / Chargement de données pour le panneau de commande
fin ;
Il vous permet de manière automatique et non – la collecte de données invasive sur un LAN ou Wi – Fi avec la diffusion par paquet UDP (User Datagram Protocol) .
Quoi de plus ne nécessite pas une connexion ouverte vers le serveur écoute uniquement sur la diffusion de port ‘ 6789 ‘ défaillance ou un autre .
Lien erreurs , Réseau , routeurs ne donnent pas lieu à une suspension ou d'erreurs logicielles non spécifiés (comme dans le cas de la communication avec le serveur TCP) , mais disparaît simplement mettre à jour les données sans affecter les données ou approprié d'application client-serveur UDP .

ATTENTION! . Si vous créez un logiciel de contrôle sur un ordinateur Windows Home Automation ehouse pour , il est nécessaire de mettre en œuvre tous les algorithmes en une seule application , qui analyse les données et effectue tous les algorithmes et les visualiser . Nous avons observé parfois que 2 socket UDP auditeur ne peut pas exister sur le même PC .
Les variables les plus importantes dans le système binaire de bibliothèque:
boiler_alarm: Boolean = false ; / / Alarme de température chaudière alarme programmée ci-dessus
/ / Plus de – chaudière alarme de température
bonfire_stat: integer ; / / Niveau de chauffage Bonfire 0 – 7 pour le mode binaire – feu le statut d'emploi
/ / 0 – déclencher – ne chauffe pas
/ / 1 – Le feu sur / extinction => ; ; niveau vert < ; ; Température de gaine (led verte clignotante) – expire clignote en vert
/ / 2 – le feu sur => ; ; niveau vert> ; ; Veste Temp => ; ; Niveau jaune – histeressis (LED verte) – vert
/ / 3 – le feu sur => ; ; Niveau jaune – histeressis> ; ; Veste temp> ; ; niveau histeressis + jaune) (vert + jaune leds) – vert – jaune
/ / 4 – le feu sur => ; ; Niveau jaune + histeressis> ; ; Veste temp> ; ; niveau rouge – histeressis (jaune) – jaune
/ / 5 – inconditionnelle => ; ; niveau rouge – histeressis < ; ; Veste temp < ; ; histeressis niveau + rouge (rouge + jaune LED) jaune – rouge
/ / 6 – inconditionnelle => ; ; Veste temp> ; ; niveau histeressis + rouge (LED rouge constant) – rouge
/ / 7 – inconditionnelle => ; ; Veste temp> ; ; alarme feu (led rouge clignotante) ALARME – clignote en rouge
bonfire_sensor_error: Boolean = false ; / / Erreur capteurs feu de joie trop différents capteurs à chemise d'eau de température entre deux
/ / Erreur capteurs cheminée manteau différence de température trop grande
recuperator_status: string ; / / Etat de récupération , ventilation , chauffage de l'air – récupérateur et le statut de ventilation
recu_winter: Boolean = false ; / / Récupérateur hiver / été échangeur de chaleur en mode activé / désactivé – Récupérateur d'hiver / été
recu_manual_amalva: boolean = true ; / / Récupérateur automatique / mode manuel pour amalva récupérateur (auto géré par contrôleur interne amalva , Gestionnaire de chaleur à ehouse manuel) / /
Récupérateur amalva manuel / automatique
went_cooler: boolean = true ; / / Refroidisseur d'eau on / off pour la ventilation ou de refroidissement dans la récupération de récupération système ou GWC ON / OFF
went_gwc: Boolean = false ; Servomoteur / / GHE (échangeur de chaleur du sol) on / off – Moteur échangeur de chaleur souterrain sous / hors tension
went_aux_gwc_fan: Boolean = false ; / / Auxiliaire GWC ventilateur / ventilateur interrupteur marche / arrêt pour l'échangeur de chaleur du sol – Fan GWC assisté
bonfire_dgp: Boolean = false ; / / Bonfire système de distribution d'air chaud activé / désactivé – Fan de la distribution de l'air chaud de la cheminée DGP
ventilation_on: Boolean = false ; / / Ventilation travaille actuellement sous / hors tension – comprennent la ventilation et de récupération de chaleur
heater_pump: boolean = true ; / / Pompe pour chauffe pour la ventilation on / off – chauffage par pompe et circuit de ventilation pour radiateurs
three_ways_cutoff: entier = 0 ; / / Trois façons 0 Sens de coupure de , L'augmentation de niveau 1 , – En diminuant le niveau 1) le sens de rotation électro – valve unidirectionnelle
solar_pump: Boolean = false ; / / Solaire pompe marche / arrêt – pompe solaire
boiler_on: Boolean = false ; / / Chaudière activé / désactivé – chaudière marche / arrêt
boiler_pump: Boolean = false ; / / Etat de la pompe de la chaudière marche / arrêt – Pompe chaudière marche / arrêt
boiler_fuel_out: Boolean = false ; / / Chaudière en panne de carburant approximatives (compter les heures de chauffage) – pénuries de carburant estimatives pour chaudière à combustible solide (calculée sur la base des heures de fonctionnement de la chaudière)
boiler_power_on: Boolean = false ; / Puissance supplay / chaudière marche / arrêt ; – Puissance de la chaudière marche / arrêt
boiler_fuel_supply_override: Boolean = false ; / / Remplacer la chaudière à combustible supplyier (contrôle par ehouse / régulateur de chaudière interne) – Parent ehouse système contrôlé de distribution de carburant sous / hors tension
bonfire_pump: Boolean = false ; / État de la pompe / Bonfire on / off – pompe à incendie de marche / arrêt
recu_speed: entier = 0 ; / / Récupérateur speeed 0 . . 3 – Récupérateur de vitesse
recu_temperature: integer ; / / Niveau de température de 0 RECU . . 30C température récupérateur pour amalwa
_recu_mode: string = ‘ ‘ ; / / Récupération mode texte, tel qu'il Gestionnaire de chaleur du panneau de commande (ehouse . exe) – Mode Récupérateur le panneau de contrôle de l'application HeatMAnagerem ehouse . exe
a: string ; / État de la ventilation / texte comme un tableau de commande Gestionnaire de chaleur (ehouse . exe) – état de ventilation de même que dans le panneau Gestionnaire de chaleur de ehouse . exe
chaudière , solaire: string ; / / Chaudière , Gestionnaire de chaleur solaire statut de texte comme un panneau de commande (ehouse . exe) – état de la chaudière et le panneau de contrôle solaire (Gestionnaire de chaleur) ehouse . exe
komi: string ; / Status feu / texte comme un tableau de commande Gestionnaire de chaleur (ehouse . exe) – statut de la commande centrale incendie ehouse l'application Gestionnaire de chaleur . exe
Voyants de contrôle