Documentazione tecnica

Schema delle misure InfluxDB

Tutte le 32 misure registrate dal sistema.

Database: highland Retention policy di default: standard_highland_retention (365 giorni) Intervallo di scrittura: 60 secondi (Data Logger), variabile per le altre fonti

Retention policy

PolicyDurataDefault
autogenillimitataNo
one_year_policy365 giorniNo
standard_highland_retention365 giorni

Misure

Misure principali del terrario (Data Logger — intervallo 60 s)

Queste 16 misure sono scritte dal function node Data Logger centralizzato nel tab Utilities, che legge dal global context di Node-RED.

#MisuraCampoTipoUnitàFonte
1local_temperaturevaluefloat°CSHT35 via ESP8266/MQTT
2local_humidityvaluefloat% URSHT35 via ESP8266/MQTT
3vpdvaluefloatkPaCalcolato (formula di Magnus)
4target_temperature_computedvaluefloat°CMedia meteo (limitata a 12–24 °C)
5target_humidity_computedvaluefloat% URMedia meteo (limitata a 75–95 % dal 2026-05-02)
6difference_temperaturevaluefloat°Ctarget − misurata
7difference_humidityvaluefloat%target − misurata
8fan_speedvaluefloatPWM (0–255)Output del controllore PID
9freezer_statusvaluefloat0/1Stato presa Tapo (compressore)
10mister_statusvaluefloat0/1Stato presa Tapo
11light_statusvaluefloat0/1Stato presa Tapo
12water_level_localvaluestringarbitrariaSensore ultrasonico del livello d’acqua
13night_test_modevaluefloat0/1/−10=Notte A (ventole off), 1=Notte B (ventole 80), −1=sospeso
14power_consumptionvaluefloatWattMeross MSS310 (via daemon MQTT, ogni 2 s)
15wbt_shutdown_activevaluefloat0/1Stato del gate di shutdown ventola per wet-bulb
16pid_control_modevaluefloat0/10=PID umidità, 1=PID temperatura

Misure PWM ventole (RBE — solo al cambio di valore)

Queste misure sono registrate con nodi Report-by-Exception (RBE) — scritte solo quando il valore cambia. I periodi vuoti indicano nessun cambiamento, non output zero.

#MisuraCampoTipoUnitàFonte
15fan_pwm_outletvaluefloatPWM (0–255)Arduino pin 45
16fan_pwm_impellervaluefloatPWM (0–255)Arduino pin 46
17fan_pwm_freezervaluefloatPWM (0–255)Arduino pin 44
18fan_pwm_circulationvaluefloatPWM (0–255)Arduino pin 12

Ambiente stanza (pull HTTP — ~60 s)

Le condizioni della stanza sono recuperate da un sensore remoto (DietPi RPi su 192.168.1.94) via HTTP e salvate localmente.

#MisuraCampoTipoUnitàFonte
19room_temperaturevaluefloat°CInfluxDB remoto via HTTP
20room_humidityvaluefloat% URInfluxDB remoto via HTTP

Eventi di nebulizzazione (event-driven — per ciclo)

Registrati all’istante in cui parte un ciclo di nebulizzazione, a differenza del mister_status campionato che può mancare cicli brevi.

#MisuraCampoTipoUnitàFonte
21mist_eventvaluefloat1Tab Humidity, event-driven al trigger

Salute Arduino (parser seriale — ~2 s)

#MisuraCampoTipoUnitàFonte
22arduino_statusvaluefloat0/1Heartbeat “alive”

Riferimento meteo colombiano (poll API)

Dati meteo di 4 città d’alta quota colombiane, via OpenWeatherMap.

#MisuraCampoTipoUnitàFonte
23temperaturevaluefloat°CChinchiná (primaria)
24humidityvaluefloat% URChinchiná (primaria)
25temperature_bogotavaluefloat°CBogotá
26humidity_bogotavaluefloat% URBogotá
27temperature_medellinvaluefloat°CMedellín
28humidity_medellinvaluefloat% URMedellín
29temperature_sonsonvaluefloat°CSonsón
30humidity_sonsonvaluefloat% URSonsón

Totale: 32 misure su tutte le fonti.

Query comuni

Condizioni attuali

SELECT last("value") FROM "local_temperature"
SELECT last("value") FROM "local_humidity"
SELECT last("value") FROM "vpd"

Ultime 24 ore di temperatura

SELECT mean("value") FROM "local_temperature" WHERE time > now() - 24h GROUP BY time(5m)

Escursione giornaliera

SELECT min("value"), max("value"), mean("value") FROM "local_temperature" WHERE time > now() - 24h

Consumo elettrico

SELECT mean("value") FROM "power_consumption" WHERE time > now() - 7d GROUP BY time(1h)

Conteggio giornaliero nebulizzazioni (event-driven)

SELECT count("value") FROM "mist_event" WHERE time > now() - 24h

Confronto Notte A/B (storico)

SELECT mean("value") FROM "local_temperature" WHERE time > '2026-02-05' AND time < '2026-02-19' GROUP BY time(1h)

Note

  • Tutte le misure usano un unico nome di campo (value) per semplicità
  • Gli stati booleani (freezer, mister, light) sono salvati come float 0/1
  • water_level_local è stringa (il sensore restituisce un intero come stringa)
  • fan_speed dal Data Logger può risultare stantio di notte (mantiene l’ultimo valore PID anche a ventole spente — il PID gira solo fra le 06:30 e le 00:00)
  • Le misure fan_pwm_* usano logging RBE: i buchi nei grafici rappresentano valori invariati, non dati mancanti
  • night_test_mode = −1 indica che l’esperimento A/B è sospeso (stato attuale)
  • power_consumption viene registrato ogni 2 secondi tramite un daemon Meross persistente che pubblica su MQTT
  • Query da CLI: influx -database highland -execute 'LA TUA QUERY'
  • mist_event è event-driven (una scrittura per ciclo), a differenza di mister_status che campiona ogni 60 s e può mancare la finestra di 35 s della nebulizzazione. Usa mist_event per conteggi accurati; mister_status prima del 2026-02-24 sotto-conta di circa il 18 %
  • Nota: curl -sG (GET) restituisce risultati vuoti — usa POST o la CLI