This commit is contained in:
2026-03-12 12:52:27 +01:00
parent 39038eea9f
commit 4b401441d9
5 changed files with 57 additions and 6 deletions
-1
View File
@@ -17,4 +17,3 @@ RelayController est une application de contrôle de relais électriques et de ca
- **Communication WebSocket** : mise à jour instantanée des états via Redis
- **Historique des états** : enregistrement des événements et durées d'activation
- **Contrôle à distance** : interface web pour piloter les appareils
+4 -4
View File
@@ -4,8 +4,8 @@ programs = dashboard, workers
[program:dashboard]
process_name=%(program_name)s
priority=900
directory=/home/rpi4/workspace/django-relay-controller/relaycontroller
command=/home/rpi4/workspace/django-relay-controller/relaycontroller/runserver.sh
directory=/home/rpi4/django-relay-controller/relaycontroller
command=/home/rpi4/django-relay-controller/relaycontroller/runserver.sh
user=rpi4
group=rpi4
stopasgroup=true
@@ -17,8 +17,8 @@ programs = dashboard, workers
[program:workers]
process_name=%(program_name)s
priority=999
directory=/home/rpi4/workspace/django-relay-controller/relaycontroller
command=/home/rpi4/workspace/django-relay-controller/relaycontroller/workers.sh start
directory=/home/rpi4/django-relay-controller/relaycontroller
command=/home/rpi4/django-relay-controller/relaycontroller/workers.sh start
user=rpi4
group=rpi4
stopasgroup=true
+1 -1
View File
@@ -4,7 +4,7 @@ DEBUG=True
IS_LOGGING=False
APP_DATAS=relaycontroller
RAMDISK_DEVICE=/mnt/ramdisk
MKCERT_VERSION=mkcert-v1.4.4
MKCERT_VERSION=v1.4.4
DJANGO_APP=relaycontroller
APP_TITLE=Controleur de relais
@@ -0,0 +1,52 @@
# Generated by Django 6.0.3 on 2026-03-12 10:50
import datetime
import django.db.models.deletion
import django_resized.forms
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('django_celery_beat', '0019_alter_periodictasks_options'),
]
operations = [
migrations.CreateModel(
name='DeviceType',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=64, null=True, verbose_name='Nom du capteur')),
('code', models.SlugField(blank=True, help_text='Max 16 caractères', max_length=16, null=True, unique=True, verbose_name='Type de capteur')),
],
options={
'verbose_name': 'Type de capteur',
'verbose_name_plural': 'Types de capteurs',
'ordering': ['name'],
},
),
migrations.CreateModel(
name='Device',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('label', models.CharField(max_length=100, null=True, verbose_name='Capteur')),
('uuid', models.SlugField(blank=True, help_text='Uuid iot clef unique', max_length=32, null=True, unique=True, verbose_name='Uuid')),
('index', models.SmallIntegerField(default=0, help_text="Numéro d'index", verbose_name='Index')),
('pin_active', models.BooleanField(default=True, help_text="Broche active à l'initialisation", verbose_name='Broche')),
('image', django_resized.forms.ResizedImageField(blank=True, crop=None, default='devices/vanne.png', force_format=None, help_text='Image du capteur', keep_meta=True, null=True, quality=-1, scale=None, size=[320, 240], upload_to='devices/', verbose_name='Image')),
('lifetime', models.DurationField(blank=True, default=datetime.timedelta(seconds=4500), help_text="Durée de l'évènement. Jours hh:mm:ss format", null=True, verbose_name='Durée')),
('heartbeat', models.IntegerField(default=1, help_text='Interrogation du capteur en secondes', verbose_name='Battement')),
('active', models.BooleanField(default=True, verbose_name='Actif')),
('task', models.ForeignKey(help_text='Tâche de démarrage périodique de ce capteur (optionnel)', null=True, on_delete=django.db.models.deletion.CASCADE, to='django_celery_beat.periodictask', verbose_name='Tâche périodique')),
('device_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='relay.devicetype', verbose_name='Type de capteur')),
],
options={
'verbose_name': 'Capteur',
'verbose_name_plural': 'Capteurs',
'ordering': ['index'],
},
),
]