Package Raccolta Differenziata
Aggiornamento 03/18/2019 22:30
Modificato file lovelace versione yaml, raccolta.py v0.8, file package, immagine di sfondo lovelace
Molti di voi erano in attesa di questo package e finalmente è stato realizzato. Il codice è stato scritto da Mattia io invece ho realizzato la parte grafica e la programmazione in Lovelace.
Questo package ci permette di essere avvisati all’ora prestabilita (poi vedremo in quali modi) della raccolta che l’indomani verrà ritirata la differenziata, fino a qui nulla di diverso dagli altri package che girano nella rete. La differenza e il suo punto di forza è la programmazione settimanale, ogni 7 giorni e bisettimanale ogni 14 giorni della raccolta. Infatti in molti comuni d’Italia alcuni rifiuti vengono raccolti ogni 14 giorni, a settimana alterna.
Vi ricordo che questo package è stato realizzato in Python quindi la procedura d’installazione sarà diversa dal solito.
Anche la parte grafica di Lovelace è stata realizzata in modo tale che possiate modificare i nomi e i colori dei singoli bidoni così per una maggiore personalizzazione.
INSTALLAZIONE COMPONENTI:
Iniziamo a scaricare il file zip Raccolta Differenziata contenente i seguenti file e cartelle:
www
python_scripts
packages
lovelace
Copiate direttamente le cartelle direttamente nella cartella /config di Home Assistant.
In www troverete le immagini per lovelace,
in inpyton_scripts il file py della differenziata
in lovelace le versioni sia per yaml che raw di lovelace
Come spiegato in precedenza dato che è stato realizzato in Python dovremmo dichiararlo in Home Assistant. Nel file configuration.yaml se non lo avete già, aggiungete la seguente riga:
1 |
python_script: |
poi creiamo una cartella in config con il nome python_script, li andremmo a copiare il file raccolta.py presente nel file .zip
Copiate ora il file pkg_differenziata_v0_5.yaml nella cartella packages, se ancora non l’avete configurata date un’occhiata alla guida Package Configurazione.
Ora è possibile riavviare Home Assistant.
PACKAGE:
Di seguito troverete il Package della raccolta differenziata bisettimanale.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
homeassistant: customize: package.node_anchors: customize: &customize Package:: Raccolta Differenziata Creato da:: Mattia (xxKira) Creato per:: HassioHelp input_text.umido_hp: icon: mdi:food-apple hidden: false input_text.carta_hp: icon: mdi:file hidden: false input_text.vetro_hp: icon: mdi:glass-wine hidden: false input_text.plastica_hp: icon: mdi:bottle-wine hidden: false input_text.verde_hp: icon: mdi:tree hidden: false input_text.secco_hp: icon: mdi:delete-empty hidden: false customize_glob: "input_text.*_hp": <<: *customize "automation.*_hp": <<: *customize "input_datetime.*_hp": <<: *customize "input_boolean.*_hp": <<: *customize "script.*_hp": <<: *customize input_datetime: orario_avviso_differenziata_hp: name: Orario avviso raccolta differenziata has_date: false has_time: true initial: "20:00" ## serve per far comparire/scomparire il menù scelta giorni in lovelace input_boolean: differenziata_settings_hp: giorni_settings_hp: input_text: vuoto: name: vuoto initial: ' ' secco_hp: name: secco umido_hp: name: umido carta_hp: name: carta plastica_hp: name: plastica vetro_hp: name: vetro verde_hp: name: verde servizio_notifica_hp: name: notify. initial: 'telegram' titolo_notifica_hp: name: titolo notifica initial: '*Differenziata*' messaggio_notifica_hp: name: messaggio notifica initial: 'Domani ritirano:' entity_google_tts_hp: initial: 'google_home' name: 'tts.google_say' entity_alexa_tts_hp: initial: 'alexa, echo' name: 'alexa_tts' entity_script_tts_hp: initial: 'speech' name: 'script.' automation: # set_settimana = True parte dalla prima settimana di Gennaio, False = parte dalla seconda settimana di Gennaio # da tenere conto solo per il bisettimanale e mensile # se set_settimana viene omesso sarà di default a True quindi partendo dalla prima settimana di Gennaio - alias: 'Sincronizzo Raccolta hp' initial_state: 'on' trigger: - platform: homeassistant event: start - platform: state entity_id: input_text.verde_hp, input_text.umido_hp, input_text.vetro_hp, input_text.carta_hp, input_text.plastica_hp, input_text.secco_hp - platform: template value_template: '{{ states("sensor.time") == "01:00" }}' action: - service: python_script.raccolta data: argomento: "sincronizza" set_settimana: "True" - alias: 'Notifica Raccolta hp' initial_state: 'on' trigger: - platform: template value_template: '{{ states("sensor.time") == (states.input_datetime.orario_avviso_differenziata_hp.attributes.timestamp | int | timestamp_custom("%H:%M", False)) }}' action: - service: script.notifica_raccolta_hp script: sincronizza_raccolta_hp: sequence: - service: python_script.raccolta data: argomento: "sincronizza" set_settimana: "True" notifica_raccolta_hp: sequence: - service: python_script.raccolta data_template: argomento: "notifica" set_settimana: "True" servizio_notifica: "{{ states('input_text.servizio_notifica_hp') }}" titolo_notifica: "{{ states('input_text.titolo_notifica_hp') }}" messaggio_notifica: "{{ states('input_text.messaggio_notifica_hp') }}" entity_google_tts: "{{ states('input_text.entity_google_tts_hp') }}" entity_alexa_tts: "{{states('input_text.entity_alexa_tts_hp') }}" entity_script_tts: "{{ states('input_text.entity_script_tts_hp') }}" |
LOVELACE:
Troverete all’interno della cartella lovelace due file per la configurazione di lovelace quella per versione yaml e quella per versione grafica raw.
Per coloro che usano la versione yaml possono includere direttamente il file aggiungendo le seguenti righe nel file ui-lovelace.yaml:
1 2 3 |
- title: Differenziata icon: 'mdi:delete-empty' cards: !include lovelace/differenziata_multi_lovelace.yaml |
Per coloro che usano la versione grafica raw dovranno creare una card picture-elements e 2 card conditional e copiarci i relativi codici che ho opportunamente suddiviso
FUNZIONAMENTO:
Tramite i due menù a scomparsa potrete aprire le due card per la personalizzazione
Con il menù di sinistra si potranno personalizzare le seguenti cose:
- ora di invio notifica,
- titolo della notifica,
- messaggio che precederà la differenziata che verrà raccolta,
- il/i nome/i dei/del servizi/o di notifica, infatti è possibile separando con una virgola aggiungere più servizi di notifica (es.telegram, pushover, pushbullet, telegram_xx)
- il messaggio vocale tts al vostro google home, specificate il nome del media_player. Lasciate vuoto se non volete nessuna notifica audio
- il messaggio vocale tts ad alexa e/o echo dot, specificate il nome del media_player. Lasciate vuoto se non volete nessuna notifica audio
- la sincronizzazione forzata (normalmente avviene tra le 24:00 e le 1:00,
- un invio forzato della notifica
Dal menù di destra si potranno selezionare i giorni per la raccolta. I giorni ammessi sono: lun, mar, mer, gio, ven, sab e dom, sia in minuscolo che in maiuscolo è indifferente.
Invece il carattere che determina il salto della settimana è il meno “-“, gli spazi sono indifferenti sia tra i giorni della settimana che tra il salto di settimana.
Vediamo ora con alcuni esempi il funzionamento della sintassi per la determinazione dei giorni della raccolta.
- Secco: lun ogni lunedì di ogni settimana (4 volte al mese)
- Umido: lun,gio ogni lunedì e giovedì di ogni settimana (8 volte al mese)
- Vetro: -mar solo il martedì DISPARI della prima e della terza settimana del mese (2 volte al mese)
- Plastica: --mar solo il martedì PARI della seconda e della quarta settimana del mese (2 volte al mese)
Di default il package identifica come pari la prima settimana di Gennaio ma modificando il package è possibile invertire il pari con il dispari se lo ritenete opportuno.
PERSONALIZZAZIONE DI LOVELACE:
Di seguito analizziamo il codice Lovelace un pezzetto alla volta in modo tale da capire quale parte poter modificare per personalizzare la grafica. In questo package sono state utilizzate due diverse card la prima più complessa una Card picture-elements e due Card conditional per i settaggi.
Codice completo delle tre card per Lovelace Raw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 |
- elements: ### TITOLO - entity: input_text.vuoto prefix: 'Differenziata' style: background-color: 'rgba(34, 154, 210, 0.5)' border-radius: 6px color: black font-family: Trebuchet MS font-size: 120% font-weight: bold left: 10% opacity: 0.8 pointer-events: auto right: 10% text-align: center top: 10% transform: 'translate(0%,-50%)' tap_action: action: none hold_action: action: none type: state-label ### BIDONE SECCO - entity: raccolta_hp.secco image: /local/immagini/lovelace/bidone.png state_filter: 'off': null 'on': hue-rotate(20deg) brightness(1.5) style: left: 9% top: 67% width: 15% type: image ### GIORNI RACCOLTA SECCO - entity: input_text.secco_hp style: color: black font-family: Trebuchet MS font-size: 100% font-weight: bold left: 9% opacity: 0.8 pointer-events: auto text-align: center top: 61% tap_action: action: none hold_action: action: none type: state-label ### NOME BIDONE SECCO - entity: input_text.vuoto prefix: 'Secco' style: color: white font-family: Trebuchet MS font-size: 100% font-weight: bold left: 9% opacity: 0.8 pointer-events: auto text-align: center top: 95.6% type: state-label ### BIDONE UMIDO - entity: raccolta_hp.umido image: /local/immagini/lovelace/bidone.png state_filter: 'off': null 'on': hue-rotate(00deg) grayscale(50%) brightness(0.4) style: left: 25% top: 67% width: 15% tap_action: action: none hold_action: action: none type: image ### GIORNI RACCOLTA UMIDO - entity: input_text.umido_hp style: color: black font-family: Trebuchet MS font-size: 100% font-weight: bold left: 25% opacity: 0.8 pointer-events: auto text-align: center top: 61% tap_action: action: none hold_action: action: none type: state-label ### NOME BIDONE UMIDO - entity: input_text.vuoto prefix: 'Umido' style: color: white font-family: Trebuchet MS font-size: 100% font-weight: bold left: 25% opacity: 0.8 pointer-events: auto text-align: center top: 95.6% tap_action: action: none hold_action: action: none type: state-label ### BIDONE CARTA - entity: raccolta_hp.carta image: /local/immagini/lovelace/bidone.png state_filter: 'off': null 'on': hue-rotate(00deg) style: left: 42% top: 67% width: 15% type: image ### GIORNI RACCOLTA CARTA - entity: input_text.carta_hp style: color: black font-family: Trebuchet MS font-size: 100% font-weight: bold left: 42% opacity: 0.8 pointer-events: auto text-align: center top: 61% tap_action: action: none hold_action: action: none type: state-label ### NOME BIDONE CARTA - entity: input_text.vuoto prefix: 'Carta' style: color: white font-family: Trebuchet MS font-size: 100% font-weight: bold left: 42% opacity: 0.8 pointer-events: auto text-align: center top: 95.6% tap_action: action: none hold_action: action: none type: state-label ### BIDONE PLASTICA - entity: raccolta_hp.plastica image: /local/immagini/lovelace/bidone.png state_filter: 'off': null 'on': hue-rotate(160deg) brightness(1.3) style: left: 59% top: 67% width: 15% type: image ### GIORNI RACCOLTA PLASTICA - entity: input_text.plastica_hp style: color: black font-family: Trebuchet MS font-size: 100% font-weight: bold left: 59% opacity: 0.8 pointer-events: auto text-align: center top: 61% tap_action: action: none hold_action: action: none type: state-label ### NOME BIDONE PLASTICA - entity: input_text.vuoto prefix: 'Plastica' style: color: white font-family: Trebuchet MS font-size: 100% font-weight: bold left: 59% opacity: 0.8 pointer-events: auto text-align: center top: 95.6% tap_action: action: none hold_action: action: none type: state-label ### BIDONE VETRO - entity: raccolta_hp.vetro image: /local/immagini/lovelace/bidone.png state_filter: 'off': null 'on': hue-rotate(100deg) brightness(1.1) style: left: 75% top: 67% width: 15% type: image ### GIORNI RACCOLTA VETRO - entity: input_text.vetro_hp style: color: black font-family: Trebuchet MS font-size: 100% font-weight: bold left: 75% opacity: 0.8 pointer-events: auto text-align: center top: 61% tap_action: action: none hold_action: action: none type: state-label ### NOME BIDONE VETRO - entity: input_text.vuoto prefix: 'Vetro' style: color: white font-family: Trebuchet MS font-size: 100% font-weight: bold left: 75% opacity: 0.8 pointer-events: auto text-align: center top: 95.6% tap_action: action: none hold_action: action: none type: state-label ### BIDONE VERDE - entity: raccolta_hp.verde image: /local/immagini/lovelace/bidone.png state_filter: 'off': null 'on': hue-rotate(100deg) brightness(0.3) style: left: 91% top: 67% width: 15% type: image ### GIORNI RACCOLTA VERDE - entity: input_text.verde_hp style: color: black font-family: Trebuchet MS font-size: 100% font-weight: bold left: 91% opacity: 0.8 pointer-events: auto text-align: center top: 61% tap_action: action: none hold_action: action: none type: state-label ### NOME BIDONE VERDE - entity: input_text.vuoto prefix: 'Verde' style: color: white font-family: Trebuchet MS font-size: 100% font-weight: bold left: 91% opacity: 0.8 pointer-events: auto text-align: center top: 95.6% tap_action: action: none hold_action: action: none type: state-label ### ICONA SELEZIONE GIORNI RACCOLTA - entity_id: input_boolean.giorni_settings_hp icon: 'mdi:calendar-today' tap_action: action: call-service service: input_boolean.toggle service_data: entity_id: input_boolean.giorni_settings_hp style: color: green left: 95% top: 10% type: icon ### ICONA SETTAGGIO NOTIFICA - entity_id: input_boolean.differenziata_settings_hp icon: 'mdi:comment-text-outline' tap_action: action: call-service service: input_boolean.toggle service_data: entity_id: input_boolean.differenziata_settings_hp style: color: black left: 5% top: 10% type: icon image: /local/immagini/lovelace/sfondo differenziata.jpg ### MENU SELEZIONE GIORNI RACCOLTA type: picture-elements - card: entities: - input_text.secco_hp - input_text.umido_hp - input_text.carta_hp - input_text.plastica_hp - input_text.vetro_hp - input_text.verde_hp type: entities conditions: - entity: input_boolean.giorni_settings_hp state: 'on' type: conditional ### MENU SETTAGGIO NOTIFICA - card: entities: - entity: input_datetime.orario_avviso_differenziata_hp icon: 'mdi:bell-ring' - entity: input_text.titolo_notifica_hp icon: 'mdi:format-title' - input_text.messaggio_notifica_hp - entity: input_text.servizio_notifica_hp icon: 'mdi:chat-alert' - type: divider - entity: input_text.entity_google_tts_hp icon: 'mdi:google-home' - entity: input_text.entity_alexa_tts_hp icon: 'mdi:amazon-alexa' - entity: input_text.entity_script_tts_hp icon: 'mdi:script' - type: divider - entity: script.sincronizza_raccolta_hp name: sincronizza icon: 'mdi:sync' - entity: script.notifica_raccolta_hp name: invia messaggio icon: 'mdi:send' type: entities conditions: - entity: input_boolean.differenziata_settings_hp state: 'on' type: conditional |
Ora andiamo a vedere il codice e come poter personalizzare la picture-elements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
### TITOLO - entity: input_text.vuoto prefix: 'Differenziata' style: background-color: 'rgba(34, 154, 210, 0.5)' border-radius: 6px color: black font-family: Trebuchet MS font-size: 120% font-weight: bold left: 10% opacity: 0.8 pointer-events: auto right: 10% text-align: center top: 10% transform: 'translate(0%,-50%)' tap_action: action: none hold_action: action: none type: state-label |
In questa parte si realizza il titolo “Differenziata” su un rettangolo smussato di colore azzurro, in alto al centro.
1 2 3 4 5 6 7 8 9 10 11 |
### BIDONE SECCO - entity: raccolta_hp.secco image: /local/immagini/lovelace/bidone.png state_filter: 'off': null 'on': hue-rotate(20deg) brightness(1.5) style: left: 9% top: 67% width: 15% type: image |
Qui abbiamo il primo bidone associato all’entity raccolta_hp.secco. Dove potremmo modificare il colore agendo sotto la riga state_filter: su off travate opacity(0.0) cioè completamente trasparente in questo modo il bidone comparirà solo quando è attivo.
Mentre su on trovate questi parametri, su altri bidoni ne troverete alcuni in più rispetto al codice qui sopra:
hue-rotate(20deg): cambiando il valore si varierà la tonalità dell’immagine in questo modo si potrà cambiare colore all’intera immagine
brightness(1.5): luminosità un valore superiore a 1 aumenterà la luminosità dell’immagine, inferiore la renderà meno luminosa
grayscale(50%): toglieremo vivacità all’immagine portandola in bianco e nero con valore 0%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
### GIORNI RACCOLTA SECCO - entity: input_text.secco_hp style: color: black font-family: Trebuchet MS font-size: 100% font-weight: bold left: 9% opacity: 0.8 pointer-events: auto text-align: center top: 61% tap_action: action: none hold_action: action: none type: state-label |
Si visualizzerà nel centro del bidone di colore nero i giorni della settimana di raccolta scelti con la card apposita di settaggio.
tap_action e hold_action impostate su none impediscono, se vengono premute con un click o con click prolungato, di aprire lo stato dell’input_select associato dato che non è di molta utilità impostarla da card
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
### NOME BIDONE SECCO - entity: input_text.vuoto prefix: 'Secco' style: color: white font-family: Trebuchet MS font-size: 100% font-weight: bold left: 9% opacity: 0.8 pointer-events: auto text-align: center top: 95.6% type: state-label |
Con uno stratagemma, utilizzando l’entità creata con l’input_text.vuoto creeremo dei testi “label” per puro scopo descrittivo, infatti è legata ad una entità vuota che è stata dichiarata nel package e non ha nulla al suo interno solo uno spazio. A questa entità vuota andremmo ad aggiungerci in lovelace un prefisso con prefix:, questo fa si che verrà visualizzato solo il prefisso.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
### ICONA SELEZIONE GIORNI RACCOLTA - entity_id: input_boolean.giorni_settings_hp icon: 'mdi:calendar-today' tap_action: action: call-service service: input_boolean.toggle service_data: entity_id: input_boolean.giorni_settings_hp style: color: green left: 95% top: 10% type: icon ### ICONA SETTAGGIO NOTIFICA - entity_id: input_boolean.differenziata_settings_hp icon: 'mdi:comment-text-outline' tap_action: action: call-service service: input_boolean.toggle service_data: entity_id: input_boolean.differenziata_settings_hp style: color: black left: 5% top: 10% type: icon image: /local/immagini/lovelace/sfondo differenziata.jpg |
Infine sono state create 2 icone di colore verde posizionate a fianco al titolo che azionano un input_boolean per far funzionare le card condition infatti qualora l’input sia ad on la card viene visualizzata se off no. L’azione tab_action in questo caso chiama il servizio input_boolean.toggle sull’entità boolean.
In questa ultima parte di codice che fa riferimento alle due card conditional ci sono le impostazioni per i giorni di raccolta e le notifiche, non ci sono cose da personalizzare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
### MENU SELEZIONE GIORNI RACCOLTA type: picture-elements - card: entities: - input_text.secco_hp - input_text.umido_hp - input_text.carta_hp - input_text.plastica_hp - input_text.vetro_hp - input_text.verde_hp type: entities conditions: - entity: input_boolean.giorni_settings_hp state: 'on' type: conditional ### MENU SETTAGGIO NOTIFICA - card: entities: - entity: input_datetime.orario_avviso_differenziata_hp icon: 'mdi:bell-ring' - entity: input_text.titolo_notifica_hp icon: 'mdi:format-title' - input_text.messaggio_notifica_hp - entity: input_text.servizio_notifica_hp icon: 'mdi:chat-alert' - type: divider - entity: input_text.entity_google_tts_hp icon: 'mdi:google-home' - entity: input_text.entity_alexa_tts_hp icon: 'mdi:amazon-alexa' - entity: input_text.entity_script_tts_hp icon: 'mdi:script' - type: divider - entity: script.sincronizza_raccolta_hp name: sincronizza icon: 'mdi:sync' - entity: script.notifica_raccolta_hp name: invia messaggio icon: 'mdi:send' type: entities conditions: - entity: input_boolean.differenziata_settings_hp state: 'on' type: conditional |
Vi lascio il link del forum dove potrete fare domande, richieste o commenti di ogni genere
https://forum.hassiohelp.eu/showthread.php?tid=223
44 risposte
Funziona tutto perfettamente, salvo che il menu delle notifiche, quello che compare cliccando l`icona in alto a destra si resetta ad ogni riavvio di Hassio, qualche soluzione, grazie.
Sei riuscito a ovviare al problema del riavvio?
Molto interessante. È possibile averlo impostando giorni diversi per la differenziata e che si riceva una notifica la sera prima cosa si deve uscire?
Cioè, il lunedì mattina ritirano l’indifferenziata quindi la domenica sera ad un ora che stabilisco io mi invia una notifica oppure se è fattibile farlo dire ad alexa ma non è fondamentale. Ogni mercoledì ritirano la carta tranne il primo mercoledì del mese che ritirano il vetro ed ogni venerdì ritirano la plastica!
Si certo questo package fa proprio quello che tu vuoi. Segui le istruzioni per impostare i giorni di raccolta
È possibile farlo ricordare anche ad alexa? Ho già integrato haaska nel mio home assistant
Si certo se noti nella foto c’è Alexa tts
Ciao,
ho seguito la guida ed ho installato senza troppi problemi il package.
L’unico limite che ho riscontrato riguarda al momento l’impossibilità di inserire dei giorni speciali o spostati per il ritiro. Per esempio dove abito io hanno anticipato il ritiro di secco e vetro perché altrimenti sarebbe capitato il 25 di aprile oppure hanno fatto due ritiri settimanali consecutivi di verde anziché a settimane alterne come usualmente previsto oltre al fatto che il verde non viene più ritirato durante il periodo invernale.
Spero in future implementazioni perché la funzionalità di base è molto utile
Da me ritirano la carta ogni tre settimana.
è possibile impostare questo tipo di raccolta?
Ciao
Volevo chiederti visto che dove mi trovo passano di sera si può modificare tipo che mi ricorda un ora prima che ritirano quel tipo di differenziata?
Ciao, le configurazioni per le card conditional e il picture elements non funzionano. Potete ricontrollare? grazie
Ciao,
alexa non funziona. Da quel che so il servizio tts è stato sostituito da notify.
Come si può modificare?
Grazie
non mi vanno le notifiche. mi potete aiutare?
Controlla che il nome che hai dato su notify: nel file configuration.yaml nel mio caso su name ho messo telegram quindi ho messo nel nome da impostare nel pkg notify.telegram
Testo? Audio? Google, Alexa?
Se mi dici qualche info in più … ti aiuto volentieri 🙂
le notifiche telegram normali le ho provate e vanno.
nessuna notifica elencata va.
Mi hanno fatto integrare un file riguardo i sensori clock time e giorno della settimana che mi hanno detto che servono.
Il sensore che serve è questo https://www.home-assistant.io/integrations/time_date
Poi come detto da Enrico, nel campo notify. devi metterci il tuo servizio SENZA notify.
esempio io ho notify.caio e ci metto caio.
Sul forum da qui in poi abbiamo parlato molto di questo problema, vedi se può essere utile ?
http://forum.hassiohelp.eu/showthread.php?tid=223&pid=1002#pid1002
ciao,ho installato il package differenziata,ma purtroppo le notifiche di Alexa non funzionano,sai dirmi come mai?
c’è possibilità che le notifiche arrivino la sera prima?
Grazie mille e complimenti per il tuo lavoro
Leo
se la raccolta avviene una volta al mese come devo impostarla?
è possibile impostare il promemoria il giorno prima rispetto il giorno del ritiro?
http://forum.hassiohelp.eu/showthread.php?pid=1033#pid1033
Riguardo alla ritiro mensile e/o trisettimsnale…. L’autore ha concepito solo il ritiro settimanale e bisettimanale.
Si potrebbero integrare facilmente, ma l’autore è non reperibile ?
Attualmente sono impegnato in un altro progetto, se avrò tempo, cerco di fare qualcosa.
ok, va bene. sarei interessato anche al fatto che l’avviso arrivi la sera del giorno prima del ritiro.
Grazie mille
ci sono novità sul ritiro mensile?
Inoltre sul menù di impostazione del giorno e orario della notifica le modifiche non vengono prese. Ad esempio ho scritto 17:20 al posto di 8:00 ma ad ogni riavvio viene fatto un reset
Per il mensile nulla di nuovo.
Per quanto riguarda le impostazioni perse ad ogni riavvio è normale se non inserisci i domini tipo input_number, automation ecc ecc sotto recorder queste verranno riportate allo stato in cui sono impostate da package.
https://www.home-assistant.io/integrations/recorder/
pertanto cosa devo scrivere sotto recorder:
per fargli ricordare l’orario diverso e il messaggio?
Sicuramente tutti gli imput, un esempio potrebbe essere
recorder:
purge_keep_days: 3
include:
domains:
– automation
– input_boolean
– input_number
– input_datetime
– input_select
– input_text
io non ho ben capito cosa devo mettere in configurazione per salvare l’orario della notifica. Qualcuno c’è riuscito?
Ciao o vai a modificare il package e modifichi l’orario iniziale
input_datetime:
orario_avviso_differenziata_hp:
name: Orario avviso raccolta differenziata
has_date: false
has_time: true
initial: “7:15”
Altrimenti nel file configuration.yaml devi aggiungere al recorder gli input_datatime in questo modo
recorder:
input_datatime
ok grazie.
preferisco aggiungere il recored su file di configurazione.
Comunque nell specifico bisogna inserire:
recorder:
include:
domains:
input_datatime
in altri modi va in errore il file di configurazione.
Ma comunque non salva il dato.
bellissimo pak , complimenti , utilissimo .
Piccola domanda , vi funziona con Alexa? ho provato tutti i modi ma , forse a causa degli aggiornamenti massivi ultimi del plug-in , a me non va .. ho provato ad inserire tutti i nomi dei miei echo in tutti i formati possibili ma non mi riproduce il suono, telegram invece funziona benissimo
ciao il pacchetto non si po scaricare, il link da errore.
In fondo hai i collegamenti del forum, dove troverai gli ultimi aggiornamenti.
Potete implementare anche la raccolta mensile?
Così poi sarebbe perfetto…
Grazie mille
Ci penseremo. Grazie.
Adesso su hacs si trova un plug-in fatto apposta x l’immondizia
mi puoi dire come si chiama e dove si trova qualche guida per l’installazione?
Cerca su hacs garbage collection ne trovi 2 una uscita oggi ma non saprei la differenza
Sto implementando la raccolta mensile. Scusate ma deingegnerizzare il codice attuale un po’ cervellotico non è stato semplicissimo. Purtroppo il python attuale si basa su un accrocchio per la lettura dei parametri non banale da capire (uno split con controllo del null)… Ho cambiato approccio. Ho mantenuto la logica dei parametri dei giorni per ogni settimana ovvero (lun,mer,sab…) e ho introdotto la logica ogni n (n max 4) settimane e quale settimana delle n per le scadenze bi/tri/quadri settimanali (2|1|mer -> mercoledì di ogni due settimane la prima delle due, 4|3|lun -> lunedì di ogni 4 settimane la terza delle quattro) usando come settimana 0 quella del 30/11/2020. Ora devo sostituire il codice con il mio dentro la funzione… quando ce la farò posterò il nuovo raccolta.py.
Ecco il nuovo raccolta.py. Vi ricordo che i parametri funzionano come prima sui giorni della settimana ovvero “lun” oppure “lun,mer,ven” ma da 2 a 4 settimane funzionano con il parametro “# settimane (1,2,3,4)|# quale settimana (1,2,3,4)|giorno” tipo “4|1|mer” oppure “3|2|lun” dalla settimana di riferimento , quella del 30/11/2020. In particolare settimane pari e dispari si indicano con “2|1|lun” o “2|2|lun”.
“”” Raccolta differenziata V1.0.b1 by Mattia(xxKira)&Axurexia for HassioHelp
For Question ask in forum.hassiohelp.eu or in Group Telegram “””
“”” 4|3|lun -by Axurexia”””
# Schema quadrisettimanale
# 0 lun 0 7 14 21
# 1 mar 1 8 15 22
# 2 mer 2 9 16 23
# 3 gio 3 10 17 24
# 4 ven 4 11 18 25
# 5 sab 5 12 19 26
# 6 dom 6 13 20 27
argomento = data.get(‘argomento’)
servizio_notifica = data.get(‘servizio_notifica’)
titolo_notifica = data.get(‘titolo_notifica’)
messaggio_notifica = data.get(‘messaggio_notifica’)
entity_google_tts = data.get(‘entity_google_tts’)
entity_alexa_tts = data.get(‘entity_alexa_tts’)
entity_script_tts = data.get(‘entity_script_tts’)
get_day = hass.states.get(‘input_boolean.giorno_notifica_hp’).state
get_verde = (hass.states.get(‘input_text.verde_hp’).state).lower().replace(‘ ‘, ”)
get_umido = (hass.states.get(‘input_text.umido_hp’).state).lower().replace(‘ ‘, ”)
get_vetro = (hass.states.get(‘input_text.vetro_hp’).state).lower().replace(‘ ‘, ”)
get_plastica = (hass.states.get(‘input_text.plastica_hp’).state).lower().replace(‘ ‘, ”)
get_secco = (hass.states.get(‘input_text.secco_hp’).state).lower().replace(‘ ‘, ”)
get_carta = (hass.states.get(‘input_text.carta_hp’).state).lower().replace(‘ ‘, ”)
attributi_input = {‘min’: 0, ‘max’: 255, ‘mode’: ‘text’, ‘Package:’: ‘Raccolta Differenziata’, ‘Creato da:’: ‘Mattia(xxKira)’, ‘Creato per:’: ‘HassioHelp’}
for x in range(1, 7):
hass.states.remove(‘raccolta_hp.bidone_’ + str(x) + ‘_hp’)
hass.states.remove(‘raccolta_hp.nome_bidone_’ + str(x) + ‘_hp’)
hass.states.remove(‘raccolta_hp.giorni_bidone_’ + str(x) + ‘_hp’)
#se è nullo lo stato viene messo a ‘-‘ altrimenti splitta per ‘-‘ quindi un –mer diventa ”,”,’mer’
if get_verde is None:
hass.states.set(‘input_text.verde_hp’, ‘-‘, attributi_input )
else:
get_verde = get_verde.split(‘-‘)
if get_umido is None:
hass.states.set(‘input_text.umido_hp’, ‘-‘, attributi_input )
else:
get_umido = get_umido.split(‘-‘)
if get_vetro is None:
hass.states.set(‘input_text.vetro_hp’, ‘-‘, attributi_input )
else:
get_vetro = get_vetro.split(‘-‘)
if get_plastica is None:
hass.states.set(‘input_text.plastica_hp’, ‘-‘, attributi_input )
else:
get_plastica = get_plastica.split(‘-‘)
if get_secco is None:
hass.states.set(‘input_text.secco_hp’, ‘-‘, attributi_input )
else:
get_secco = get_secco.split(‘-‘)
if get_carta is None:
hass.states.set(‘input_text.carta_hp’, ‘-‘, attributi_input)
else:
get_carta = get_carta.split(‘-‘)
days = {0:’lun’, 1:’mar’, 2:’mer’, 3:’gio’, 4:’ven’, 5:’sab’, 6:’dom’}
data_oggi = datetime.datetime.now()
#data_oggi = datetime.datetime(2021, 3, 20)
data_riferimento = datetime.datetime(2020, 11, 30)
oggi_n = (data_oggi – data_riferimento).days
oggi_s = data_oggi.weekday()
domani_n = oggi_n + 1
domani_s = (oggi_n + 1) % 7
oggi_s = days[oggi_s]
domani_s = days[domani_s]
def set_rifiuti(hass, day, day_n, get_vetro, get_verde, get_umido, get_plastica, get_secco, get_carta):
global attributi_sensor
attributi_sensor = {‘Package:’: ‘Raccolta Differenziata’, ‘Creato da:’: ‘Axurexia’, ‘Creato per:’: ‘HassioHelp’}
global domani_ritirano
domani_ritirano = []
dayn = [‘lun’, ‘mar’, ‘mer’, ‘gio’, ‘ven’, ‘sab’, ‘dom’]
#se viene messo a 0 è giorno di raccolta
ris_vetro = 1
ris_umido = 1
ris_carta = 1
ris_plastica = 1
ris_secco = 1
ris_verde = 1
vetro = get_vetro[0]
verde = get_verde[0]
umido = get_umido[0]
plastica = get_plastica[0]
secco = get_secco[0]
carta = get_carta[0]
#VETRO
vetro = vetro.split(“|”)
if len(vetro) == 3 :
day_calc = ((int(vetro[1]) – 1) * 7) + dayn.index(vetro[2])
vetro = vetro[0]
vetro = vetro.split(“,”)
ris_vetro = (day_n – day_calc) % (int(vetro[0]) * 7)
else:
vetro = vetro[0]
vetro = vetro.split(“,”)
if vetro.count(day) == 1:
ris_vetro = 0
#UMIDO
umido = umido.split(“|”)
if len(umido) == 3 :
day_calc = ((int(umido[1]) – 1) * 7) + dayn.index(umido[2])
umido = umido[0]
umido = umido.split(“,”)
ris_umido = (day_n – day_calc) % (int(umido[0]) * 7)
else:
umido = umido[0]
umido = umido.split(“,”)
if umido.count(day) == 1:
ris_umido = 0
#CARTA
carta = carta.split(“|”)
if len(carta) == 3 :
day_calc = ((int(carta[1]) – 1) * 7) + dayn.index(carta[2])
carta = carta[0]
carta = carta.split(“,”)
ris_carta = (day_n – day_calc) % (int(carta[0]) * 7)
else:
carta = carta[0]
carta = carta.split(“,”)
if carta.count(day) == 1:
ris_carta = 0
#PLASTICA
plastica = plastica.split(“|”)
if len(plastica) == 3 :
day_calc = ((int(plastica[1]) – 1) * 7) + dayn.index(plastica[2])
plastica = plastica[0]
plastica = plastica.split(“,”)
ris_plastica = (day_n – day_calc) % (int(plastica[0]) * 7)
else:
plastica = plastica[0]
plastica = plastica.split(“,”)
if plastica.count(day) == 1:
ris_plastica = 0
#SECCO
secco = secco.split(“|”)
if len(secco) == 3 :
day_calc = ((int(secco[1]) – 1) * 7) + dayn.index(secco[2])
secco = secco[0]
secco = secco.split(“,”)
ris_secco = (day_n – day_calc) % (int(secco[0]) * 7)
else:
secco = secco[0]
secco = secco.split(“,”)
if secco.count(day) == 1:
ris_secco = 0
#VERDE
verde = verde.split(“|”)
if len(verde) == 3 :
day_calc = ((int(verde[1]) – 1) * 7) + dayn.index(verde[2])
verde = verde[0]
verde = verde.split(“,”)
ris_verde = (day_n – day_calc) % (int(verde[0]) * 7)
else:
verde = verde[0]
verde = verde.split(“,”)
if verde.count(day) == 1:
ris_verde = 0
if ris_vetro == 0:
hass.states.set(‘raccolta_hp.vetro’, ‘on’, attributi_sensor)
domani_ritirano = domani_ritirano + [“vetro”]
else:
hass.states.set(‘raccolta_hp.vetro’, ‘off’, attributi_sensor)
if ris_verde == 0:
hass.states.set(‘raccolta_hp.verde’, ‘on’, attributi_sensor)
domani_ritirano = domani_ritirano + [“verde”]
else:
hass.states.set(‘raccolta_hp.verde’, ‘off’, attributi_sensor)
if ris_plastica == 0:
hass.states.set(‘raccolta_hp.plastica’, ‘on’, attributi_sensor)
domani_ritirano = domani_ritirano + [“plastica”]
else:
hass.states.set(‘raccolta_hp.plastica’, ‘off’, attributi_sensor)
if ris_carta == 0:
hass.states.set(‘raccolta_hp.carta’, ‘on’, attributi_sensor)
domani_ritirano = domani_ritirano + [“carta”]
else:
hass.states.set(‘raccolta_hp.carta’, ‘off’, attributi_sensor)
if ris_umido == 0:
hass.states.set(‘raccolta_hp.umido’, ‘on’, attributi_sensor)
domani_ritirano = domani_ritirano + [“umido”]
else:
hass.states.set(‘raccolta_hp.umido’, ‘off’, attributi_sensor)
if ris_secco == 0:
hass.states.set(‘raccolta_hp.secco’, ‘on’, attributi_sensor)
domani_ritirano = domani_ritirano + [“secco”]
else:
hass.states.set(‘raccolta_hp.secco’, ‘off’, attributi_sensor)
if get_day == ‘on’:
hass.states.set(‘input_boolean.giorno_notifica_hp’, ‘on’, {‘friendly_name’: ‘Notifica Oggi’, ‘icon’: ‘mdi:update’, ‘Package:’: ‘Raccolta Differenziata’, ‘Creato da:’: ‘Mattia(xxKira)’, ‘Creato per:’: ‘HassioHelp’})
set_rifiuti(hass, oggi_s, oggi_n, get_vetro, get_verde, get_umido, get_plastica, get_secco, get_carta)
else:
hass.states.set(‘input_boolean.giorno_notifica_hp’, ‘off’, {‘friendly_name’: ‘Notifica Giorno Prima’, ‘icon’: ‘mdi:update’, ‘Package:’: ‘Raccolta Differenziata’, ‘Creato da:’: ‘Mattia(xxKira)’, ‘Creato per:’: ‘HassioHelp’})
set_rifiuti(hass, domani_s, domani_n, get_vetro, get_verde, get_umido, get_plastica, get_secco, get_carta)
domani_ritirano = “, “.join(domani_ritirano)
try:
message = messaggio_notifica + ” ” + domani_ritirano
messagetts = messaggio_notifica + “,” + domani_ritirano
except:
message = “Domani ritirano:” + domani_ritirano
messagetts = “Domani ritirano:” + domani_ritirano
title = titolo_notifica
if argomento == ‘notifica’ and len(domani_ritirano) != 0:
servizio_notifica = servizio_notifica.replace(‘ ‘, ”).split(‘,’)
entity_google_tts = entity_google_tts.replace(‘ ‘, ”).split(‘,’)
entity_alexa_tts = entity_alexa_tts.replace(‘ ‘, ”).split(‘,’)
try:
entity_script_tts = entity_script_tts.replace(‘ ‘, ”).split(‘,’)
except:
pass
# try:
# for entity_alexa in entity_alexa_tts:
# hass.services.call(‘media_player’, ‘alexa_tts’, {‘entity_id’: ‘media_player.’ + entity_alexa, ‘message’: message}) #”message”:”test”, “data”:{“type”:”tts”},
try:
for entity_alexa in entity_alexa_tts:
hass.services.call(‘notify’,’alexa_media’, {‘target’: entity_alexa, ‘data’: {‘type’:’tts’}, ‘title’: title, ‘message’: message})
except:
pass
try:
for entity_google in entity_google_tts:
hass.services.call(‘tts’, ‘google_translate_say’, {‘entity_id’: ‘media_player.’ + entity_google, ‘message’: messagetts})
except:
pass
try:
for service in servizio_notifica:
hass.services.call(‘notify’, service, {‘title’: title, ‘message’: message})
except:
pass
try:
for entity_script in entity_script_tts:
hass.services.call(‘script’, entity_script, {‘title’: title, ‘message’: message})
except:
pass
if len(domani_ritirano) != 0:
i = 0
try:
bidoni_on = domani_ritirano.replace(‘ ‘,”).split(‘,’)
except:
bidoni_on = domani_ritirano
for x in bidoni_on:
i = i + 1
y = (hass.states.get(‘input_text.’ + x + ‘_hp’).state).lower().replace(‘,’, ‘ ‘)
hass.states.set(‘raccolta_hp.bidone_’ + str(i) + ‘_hp’, ‘on’, attributi_sensor)
hass.states.set(‘raccolta_hp.nome_bidone_’ + str(i) + ‘_hp’, x, attributi_input)
hass.states.set(‘raccolta_hp.giorni_bidone_’ + str(i) + ‘_hp’, y, attributi_input)
#.capitalize()
Ottimo bel lavoro la testeremo.
Ciao.. Messo così il file.py è impossibile da usare..
Con il copia incolla non và, lo stò correggendo ma è dura capire, c’è altro modo per avere il file .py??
Ciao,grazie per il bel pacchetto!anche se non riesco ad implementare le notifiche tramite google tts e il problema del messaggio di notifica che ad ogni riavvio va inserito,tutto funziona,chiedevo maggiori informazioni (se possibile)…
Visto che non passano mai due tipi di raccolta dove abito,chiedevo se fosse possibile ridurre la larghezza della picture card dove vengono mostrati i bidoni…Grazie!Buon 2021!
Ciao ? Il pkg è stupendo!
Mi piacerebbe però usare le notifiche tramite l’app di Home assitant…c’è qualche modo per poterle usare invece di quelle di telegram?
Grazie in anticipo
Ciao.ottima guida.mi funziona tutto tranne che la notifica al google home.ho messo il nome del mio media_player nel campo in parrte a tts ma quando provo ad inviare il messaggio forzato quello di telegram funziona mentre quello del google home no va.non capisco dove sbaglio…grazie
ciao a tutti …. anche io provo ad inviare le notifiche telegram in automatico e nn funzionano. inviandole manualmente vanno però.
inoltre non ricevo le notifiche da alexa.
il codice è scritto cosi…
servizio_notifica_hp:
name: notify.
initial: ‘matteo’ —-> il servizio si chiama notify.matteo
titolo_notifica_hp:
name: titolo notifica
initial: ‘*Differenziata*’
messaggio_notifica_hp:
name: messaggio notifica
initial: ‘Domani ritirano:’
entity_google_tts_hp:
initial: ‘google_home’
name: ‘tts.google_say’
entity_alexa_tts_hp:
initial: ‘matteo_marina’ ——-> entità si chiama media_player.matteo_marina
name: ‘alexa_tts’
entity_script_tts_hp:
initial: ‘speech’ —–> voglio la notifica vocale
name: ‘script.’
grazie