37 Commits

Author SHA1 Message Date
Samuele Locatelli fc63a8e8b4 Merge tag 'AgenticRefactorReadParallela_04' into develop
Update zip + md5 + update script con altri minor fix post verifica
gestione
2026-05-13 09:55:48 +02:00
Samuele Locatelli d1e9467395 Merge branch 'release/AgenticRefactorReadParallela_04' 2026-05-13 09:55:27 +02:00
Samuele Locatelli 5f952faad7 Update vers zip/md6 x nexus (install salt) 2026-05-13 09:51:27 +02:00
Samuele Locatelli c6f3f7a50a Fix output 2/3 hex + log 2026-05-13 09:39:50 +02:00
Samuele Locatelli d449d60e09 Merge tag 'AgenticRefactorReadParallela_03' into develop
Update spostamento vers 2.6 superate in old
2026-05-12 19:00:07 +02:00
Samuele Locatelli 3caeebcffa Merge branch 'release/AgenticRefactorReadParallela_03' 2026-05-12 18:59:55 +02:00
Samuele Locatelli 1288b3f119 archiviazione old vers 2.6 2026-05-12 18:59:37 +02:00
Samuele Locatelli 8323373e78 Merge tag 'AgenticRefactorReadParallela_02' into develop
Update script x installare vers 3.1 da salt
2026-05-12 18:58:14 +02:00
Samuele Locatelli b19c153466 Merge branch 'release/AgenticRefactorReadParallela_02' 2026-05-12 18:57:55 +02:00
Samuele Locatelli d97eb23b5e Spostamento udpate vers 2.5/2.6 + creazione nuovo script update 3.1 che opera modifiche in IOB.cfg 2026-05-12 18:56:02 +02:00
Samuele Locatelli fd1a74986e Update vers 3 con nuovo zip x nextcloud 2026-05-12 18:40:40 +02:00
Samuele Locatelli 6cfc850276 folder move in archive 2026-05-12 18:36:24 +02:00
Samuele Locatelli a7c3312574 Creazione folder x 2.6 e 3.0... 2026-05-12 18:30:46 +02:00
Samuele Locatelli 802c748e56 Merge tag 'AgenticRefactorReadParallela_01' into develop
Update readParallela versione 3.x.x:
- riscrittura agent-assisted del codice in genere
- update readme.md locale
- gestione unificata 8-12 bit con unico script
2026-05-12 18:26:16 +02:00
Samuele Locatelli 727c03ac7f Merge branch 'release/AgenticRefactorReadParallela_01' 2026-05-12 18:25:07 +02:00
Samuele Locatelli 0835f942ee Minor fix x logging restart 2026-05-12 18:24:18 +02:00
Samuele Locatelli aeab49bbc7 Update README x IOB-PI 2026-05-12 18:12:20 +02:00
Samuele Locatelli db5bb9f2e1 rimozione file backup 2026-05-12 18:09:04 +02:00
Samuele Locatelli 8b1d297068 Aggiunto demo IOB.cfg con 8/12 inputs + fix gestione hexoutput 2026-05-12 18:08:43 +02:00
Samuele Locatelli 7387c51631 Fix commento 2026-05-12 17:52:03 +02:00
Samuele Locatelli 2198f01425 Controllo:_ accetta solo 8 / 12 come numParams (Input) + fix hex a 2-3 digits (8-12 inputs) 2026-05-12 17:46:28 +02:00
Samuele Locatelli 1f31183e8d Update con parametrizzazione num pins/input 2026-05-12 17:45:49 +02:00
Samuele Locatelli 4752bf6fcf update vers num 2026-05-12 16:56:25 +02:00
Samuele Locatelli cb914a4f56 Ottimizzazione lettura GPIO 2026-05-12 16:34:15 +02:00
Samuele Locatelli 328a5fe540 aggiunta commenti 2026-05-12 16:30:43 +02:00
Samuele Locatelli 1c1344ea63 update condizione di LOG 2026-05-12 16:19:32 +02:00
Samuele Locatelli d09977f17a Continuo testing versione 2026-05-12 16:14:20 +02:00
Samuele Locatelli 7eaf82a248 Merge branch 'develop' of https://gitlab.steamware.net/egalware-web/mes/mapo/Mapo-IOB into develop 2026-05-12 15:50:15 +02:00
Samuele Locatelli 6bb6e8b4f9 Rimesso commenti iniziali 2026-05-12 15:50:13 +02:00
Samuele Locatelli 66fd0f417c Inizio modifiche readParallela (12bit) v3 da coding assistant 2026-05-12 15:48:45 +02:00
Samuele Locatelli 69540243d4 Aggiunta preliminare readme a corredo del ReadParallela 2026-05-12 15:48:15 +02:00
Samuele Locatelli 4b6d7b415c Update x fix errore file to_retry 2026-05-12 12:08:35 +02:00
Giancarlo Rottoli c859db736f Aggiunto Barcode Prototipi 2026-03-30 12:05:21 +02:00
Samuele Locatelli b8c24f8458 Modalità modifica servizio MapoIOB con ritardo avvio + restart 2026-03-27 09:06:36 +01:00
Samuele Locatelli 40f50c27c2 Update fam stati Jetco x compressori (aggiunto emergenza) 2025-11-25 11:16:41 +01:00
Samuele Locatelli eddc8af40b Merge tag 'UpdateMainBranch' into develop
Update gestione stati x compressori Jetco
2025-11-25 11:04:19 +01:00
Samuele Locatelli 63f5a41628 Merge branch 'release/UpdateMainBranch' 2025-11-25 11:04:00 +01:00
206 changed files with 6665 additions and 775 deletions
+72
View File
@@ -0,0 +1,72 @@
[id]
idxMacchina = 0001
#idxMacchina = SIMUL_01
#numParams=8
numParams=12
[web]
URLBASE = http://10.74.82.218/MP/RIOC/api/IOB/input/
URLALIVE = http://10.74.82.218/MP/RIOC/api/IOB
URLENABLED = http://10.74.82.218/MP/RIOC/api/IOB/enabled/
URLADV1 = ?valore=
URLREBO = http://10.74.82.218/MP/IOC/api/IOB/sendReboot/
URLINFO = http://10.74.82.218/MP/RIOC/api/IOB/setM2IOB/
[time]
SAMPLETIME = 0.10
TIMEOUTSHORT = 0.50
TIMEOUTLONG = 80
SENDURLTIME = 0.10
NMAXSEND = 5
[log]
LOGLEVEL = 10
LOGFILE = logfile.txt
LOGREBO = logReboot.txt
[comm]
port = /dev/ttyAMA0
[blink]
MAX_COUNTER_BLINK = 30
bit0 = 0
bit1 = 0
bit2 = 0
bit3 = 0
bit4 = 0
bit5 = 0
bit6 = 0
bit7 = 0
bit8 = 0
bit9 = 0
bit10 = 0
bit11 = 0
[invert]
bit0 = 0
bit1 = 0
bit2 = 0
bit3 = 0
bit4 = 0
bit5 = 0
bit6 = 0
bit7 = 0
bit8 = 0
bit9 = 0
bit10 = 0
bit11 = 0
[filter]
MAX_COUNTER_FILTER = 8
bit0 = 0
bit1 = 0
bit2 = 0
bit3 = 0
bit4 = 0
bit5 = 0
bit6 = 0
bit7 = 0
bit8 = 0
bit9 = 0
bit10 = 0
bit11 = 0
+69 -2
View File
@@ -8,20 +8,87 @@ Se il minion è taggato come iop-pi bast dare state apply, poiché dallo stato t
* iob-pi.sls
* iob-setup.sls
altrimenti meglio dare
* iob-pi-install
* iob-pi-upgrade
## approfondimenti
va poi controllato il numero di inputs e va specificato all'inizio del file IOB.cfg a seconda che abbia 8 o 12 inputs
<code>
#numParams=8
numParams=12
</code>
## Approfondimenti
Valutato python-rq x gestione code con redis tramite esecuzione workers python gestiti in autonomia:
<code>
https://python-rq.org/
https://python-rq.org/docs/workers/
</code>
Testato ma al momento non è rispondente ai requisiti del programma per cui si rischia un blocco inf ase di invio se server non OK, per ora implementata copia "manuale" della coda verso redis per salvaguardare dati accumulati (vers 2.6.x)
## MD5 zip##
creazione MD5: da powershell
<code>
Get-FileHash .\Mapo.zip -Algorithm MD5
</code>
</code>
## ReadParallela IOB-PI
### Panoramica
`readParallela.py` è uno script di acquisizione dati ad alta frequenza progettato per Raspberry Pi. Interfaccia una scheda GPIO personalizzata per leggere 12 ingressi digitali paralleli, applica vari filtri di elaborazione del segnale e mette in coda gli eventi per la trasmissione asincrona a un server remoto tramite Redis e HTTP.
### Funzionalità Principali
#### 1. Acquisizione e Elaborazione Segnali
Lo script interroga 12 pin GPIO a un intervallo configurabile (`SAMPLETIME`). Per ogni ingresso, applica una pipeline di elaborazione a tre stadi:
* **Inversione:** Inverte la logica del segnale se configurata per un bit specifico.
* **Filtraggio Segnali Brevi (Debounce):** Filtra i picchi elettrici o il rumore richiedendo che il segnale rimanga stabile per un numero specifico di cicli (`MAX_COUNTER_FILTER`).
* **Gestione Blinking:** Rileva e gestisce segnali "blinking", permettendo il rilevamento di eventi basati su timing specifici.
#### 2. Impacchettamento Dati
Una volta elaborati, i 12 bit vengono aggregati in un unico valore intero e convertiti in una stringa Esadecimale.
#### 3. Code e Trasmissione Eventi
Per garantire che la lettura ad alta velocità non sia interrotta dalla latenza di rete:
* **Coda Redis:** Le variazioni rilevate (e gli eventi di timeout) vengono datate e inserite in una lista Redis (`IOB`).
* **Invio Asincrono:** Un thread dedicato in background (`svuotaCoda`) estrae periodicamente gli elementi dalla coda Redis e esegue richieste HTTP a un server centrale.
* **Affidabilità:** Lo script implementa un meccanismo di "retry" e monitora la disponibilità del server (`URLALIVE`) per gestire i periodi offline.
#### 4. Gestione Timeout
Lo script monitora due tipi di timeout:
* **Timeout Breve:** Assicura che lo stato di un segnale venga registrato anche se cambia rapidamente.
* **Timeout Lungo:** Fornisce un sistema di fallback per garantire la coerenza dello stato su periodi più lunghi.
### Dettagli di Implementazione (Versione Refactored)
Lo script è stato modernizzato con i seguenti miglioramenti:
* **Design Orientato agli Oggetti:** La logica è incapsulata all'interno della classe `ReadParallelaIOB`, eliminando la dipendenza da variabili globali pericolose.
* **Operazioni Bitwise Efficienti:** Sostituzione dei controlli manuali `if` con operatori bitwise per una ricostruzione dei bit più veloce e ottimizzazione dell'accesso agli attributi nelle loop critiche.
* **Networking Moderno:** Sostituzione di `urllib` con la libreria `requests` per una comunicazione HTTP più robusta e leggibile.
* **Configurazione Ottimizzata:** Utilizzo di cicli per caricare le impostazioni per singolo bit dal file di configurazione.
### Configurazione
Le impostazioni sono gestite tramite `IOB.cfg`, tra cui:
* `[time]`: Frequenze di campionamento e timeout.
* `[id]`: Identificativo macchina.
* `[web]`: URL per la trasmissione dati e controlli di connettività.
* `[blink]`, `[invert]`, `[filter]`: Configurazione per singolo bit per l'elaborazione dei segnali.
* `[log]`: Livello di logging e percorsi dei file.
### Dipendenze
* `RPi.GPIO`: Per l'interfacciamento hardware.
* `redis`: Per la gestione della coda locale.
* `requests`: Per la comunicazione web.
* `configparser`: Per la gestione della configurazione.
BIN
View File
Binary file not shown.
@@ -8,13 +8,15 @@ Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
Restart=on-failure
RestartSec=5
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SysVStartPriority=1
ExecStartPre=/bin/sleep 5
ExecStart=/etc/init.d/MapoIOB start
ExecStop=/etc/init.d/MapoIOB stop

Some files were not shown because too many files have changed in this diff Show More