iobroker.assistant 0.1.6 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +61 -4
  2. package/admin/custom/.vite/manifest.json +122 -77
  3. package/admin/custom/assets/Components-7BDDNrGP.js +1 -0
  4. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-DcAGnE2z.js +1 -0
  5. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-CzBMxGFr.js +1 -0
  6. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-1XsLCK2M.js +1 -0
  7. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-CMv8bcyA.js +1217 -0
  8. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__loadShare__shared-3mzaJWDF.js +2 -0
  9. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-DS8oaQQt.js +122 -0
  10. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__198531368674860__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-B_v57Qfr.js +1 -0
  11. package/admin/custom/assets/dist-DiU1y0R9.js +1 -0
  12. package/admin/custom/assets/helpers-Dot7vgQQ.js +1 -0
  13. package/admin/custom/assets/hostInit-MshDicd1.js +1 -0
  14. package/admin/custom/assets/iconLibraryData-B5fiyl1C.js +1 -0
  15. package/admin/custom/assets/index-P2Xu9kJm.js +1 -0
  16. package/admin/custom/assets/lib-DjwHKtRi.js +3 -0
  17. package/admin/custom/assets/{mf-entry-bootstrap-0-87f15505.js → mf-entry-bootstrap-0-7c1ddf47.js} +14 -2
  18. package/admin/custom/assets/pendingShares-CaJDCKLB.js +2 -0
  19. package/admin/custom/assets/rolldown-runtime-Dd_uD5pT.js +1 -0
  20. package/admin/custom/assets/utils-towTPKqG.js +4 -0
  21. package/admin/custom/assets/vite-preload-helper-BbbETgeG.js +1 -0
  22. package/admin/custom/customComponents.js +2 -2
  23. package/admin/custom/i18n/de.json +64 -57
  24. package/admin/custom/i18n/en.json +8 -1
  25. package/admin/custom/i18n/es.json +64 -57
  26. package/admin/custom/i18n/fr.json +64 -57
  27. package/admin/custom/i18n/it.json +64 -57
  28. package/admin/custom/i18n/nl.json +64 -57
  29. package/admin/custom/i18n/pl.json +64 -57
  30. package/admin/custom/i18n/pt.json +64 -57
  31. package/admin/custom/i18n/ru.json +64 -57
  32. package/admin/custom/i18n/uk.json +64 -57
  33. package/admin/custom/i18n/zh-cn.json +64 -57
  34. package/admin/custom/index.html +2 -2
  35. package/admin/custom/mf-manifest.json +1 -1
  36. package/admin/custom/mf-stats.json +1 -1
  37. package/admin/i18n/de.json +59 -3
  38. package/admin/i18n/en.json +59 -3
  39. package/admin/i18n/es.json +59 -3
  40. package/admin/i18n/fr.json +59 -3
  41. package/admin/i18n/it.json +59 -3
  42. package/admin/i18n/nl.json +59 -3
  43. package/admin/i18n/pl.json +59 -3
  44. package/admin/i18n/pt.json +59 -3
  45. package/admin/i18n/ru.json +59 -3
  46. package/admin/i18n/uk.json +59 -3
  47. package/admin/i18n/zh-cn.json +59 -3
  48. package/admin/jsonConfig.json +589 -75
  49. package/build/lib/ask.js +130 -0
  50. package/build/lib/ask.js.map +1 -0
  51. package/build/lib/llm.js +135 -13
  52. package/build/lib/llm.js.map +1 -1
  53. package/build/lib/nlu.js +74 -1
  54. package/build/lib/nlu.js.map +1 -1
  55. package/build/lib/notifications.js +112 -0
  56. package/build/lib/notifications.js.map +1 -0
  57. package/build/lib/presence.js +188 -0
  58. package/build/lib/presence.js.map +1 -0
  59. package/build/lib/routines.js +115 -0
  60. package/build/lib/routines.js.map +1 -0
  61. package/build/lib/targets.js +96 -0
  62. package/build/lib/targets.js.map +1 -0
  63. package/build/lib/triggers.js +632 -0
  64. package/build/lib/triggers.js.map +1 -0
  65. package/build/lib/voice/aws.js +9 -1
  66. package/build/lib/voice/aws.js.map +1 -1
  67. package/build/lib/voice/azure.js +9 -2
  68. package/build/lib/voice/azure.js.map +1 -1
  69. package/build/lib/voice/engines.js +82 -0
  70. package/build/lib/voice/engines.js.map +1 -1
  71. package/build/lib/voice/esphome.js +732 -0
  72. package/build/lib/voice/esphome.js.map +1 -0
  73. package/build/lib/voice/esphomeEntities.js +303 -0
  74. package/build/lib/voice/esphomeEntities.js.map +1 -0
  75. package/build/lib/voice/esphomeProto.js +181 -0
  76. package/build/lib/voice/esphomeProto.js.map +1 -0
  77. package/build/lib/voice/fallback.js +85 -0
  78. package/build/lib/voice/fallback.js.map +1 -0
  79. package/build/lib/voice/mediaServer.js +151 -0
  80. package/build/lib/voice/mediaServer.js.map +1 -0
  81. package/build/lib/voice/protocol.js.map +1 -1
  82. package/build/lib/voice/tone.js +32 -0
  83. package/build/lib/voice/tone.js.map +1 -0
  84. package/build/lib/voice/tts.js.map +1 -1
  85. package/build/lib/voice/ttsCache.js +274 -0
  86. package/build/lib/voice/ttsCache.js.map +1 -0
  87. package/build/lib/voice/vad.js +173 -0
  88. package/build/lib/voice/vad.js.map +1 -0
  89. package/build/lib/voice/voiceServer.js +13 -0
  90. package/build/lib/voice/voiceServer.js.map +1 -1
  91. package/build/main.js +1721 -67
  92. package/build/main.js.map +1 -1
  93. package/io-package.json +241 -3
  94. package/package.json +13 -12
  95. package/admin/custom/assets/Components-xWdtqvTH.js +0 -1
  96. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomAssistant__mf_owner__1-dybYZgsu.js +0 -1
  97. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_emotion_mf_1_react__loadShare__.js-BnSUsPHa.js +0 -1
  98. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_emotion_mf_1_styled__loadShare__.js-DlSVT49A.js +0 -1
  99. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-Cfsgderv.js +0 -1243
  100. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomAssistant__mf_owner__1__loadShare___mf_0_iobroker_mf_1_json_mf_2_config__loadShare__.js-ByJf4zv_.js +0 -1494
  101. package/admin/custom/assets/hostInit-CZawMH9B.js +0 -1
  102. package/admin/custom/assets/index-JB7g1jgx.js +0 -1
  103. package/admin/custom/assets/lib-bB-LHRhZ.js +0 -3
  104. package/admin/custom/assets/rolldown-runtime-C0FnF6B9.js +0 -1
  105. package/admin/custom/assets/virtualExposes-brKKZvi0.js +0 -1
  106. package/admin/custom/assets/virtual_mf-REMOTE_ENTRY_ID___mfe_internal__ConfigCustomAssistant__customComponents_js-CRhwj12f.js +0 -1
  107. package/admin/custom/assets/virtual_mf-exposes___mfe_internal__ConfigCustomAssistant__customComponents_js-C5XHUc1J.js +0 -2
  108. package/admin/custom/assets/vite-preload-helper-B7qeedMF.js +0 -1
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "Une alarme/minuterie déclenchée continue de sonner (en boucle) pendant une durée maximale, ou jusqu'à ce que vous disiez « stop », « halt », « aufhören » ou « cancel » (ou que vous écriviez l'état stopRinging). 0 = le son est joué une seule fois.",
3
+ "A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "Une phrase qui exécute une liste d'actions : \"Gute Nacht\" éteint cinq appareils et répond une seule fois. Phrases : plusieurs, séparées par des virgules (reconnues n'importe où dans la phrase, majuscules/minuscules et trémas sans importance). Actions en JSON, même format qu'un déclencheur : [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Réponse : ce que répond l'assistant (laisser vide pour rester silencieux). Vérifiée avant le moteur de règles hors ligne et avant le LLM, une routine n'est donc jamais réinterprétée.",
4
+ "A successful switch command is confirmed by a short tone on the satellite instead of a spoken sentence - instant, where speaking costs a text-to-speech call. Questions, errors and the text channels are unaffected.": "Une commande de commutation réussie est confirmée par un bref signal sonore sur le satellite au lieu d'une phrase parlée - instantané, alors que parler coûte un appel de synthèse vocale. Les questions, les erreurs et les canaux texte ne sont pas concernés.",
5
+ "A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "Un déclencheur surveille des états ou l'horloge, puis parle, écrit un état ou vous pose une question et agit selon votre réponse. Désactivez un déclencheur pendant l'exécution avec triggers.items.<id>.enabled, testez-le avec son bouton fire, et tous à la fois avec triggers.enabled.",
3
6
  "API key": "Clé API",
7
+ "API password (usually empty)": "Mot de passe API (généralement vide)",
4
8
  "API-key credential": "identifiant de clé API",
5
9
  "AWS Polly": "AWS Polly",
6
10
  "AWS Polly voice (optional)": "Voix AWS Polly (facultatif)",
@@ -11,6 +15,9 @@
11
15
  "AWS secret access key": "Clé d'accès secrète AWS",
12
16
  "AWS speech": "Discours AWS",
13
17
  "Access / permissions": "Accès / permissions",
18
+ "Actions (JSON)": "Actions (JSON)",
19
+ "Address (IP or host name)": "Adresse (IP ou nom d’hôte)",
20
+ "After a switch command, wait up to 2 seconds for the device to acknowledge the new value (ack:true) and report \"did not respond\" if it never does. Leave this off for devices that never acknowledge (MQTT, scripts, 0_userdata) - every command would look failed.": "Après une commande de commutation, attendre jusqu'à 2 secondes que l'appareil confirme la nouvelle valeur (ack:true) et signaler « n'a pas répondu » s'il ne le fait jamais. Laissez désactivé pour les appareils qui ne confirment jamais (MQTT, scripts, 0_userdata) - sinon chaque commande semblerait échouer.",
14
21
  "Alarm sound (mp3/wav, optional)": "Sonnerie d'alarme (mp3/wav, optionnel)",
15
22
  "Allow changing objects and files (dangerous)": "Autoriser la modification des objets et des fichiers (dangereux)",
16
23
  "Allow controlling states": "Autoriser les états de contrôle",
@@ -21,41 +28,60 @@
21
28
  "Allow writing states (control devices)": "Autoriser l'écriture des états (dispositifs de contrôle)",
22
29
  "Allow writing to the log": "Autoriser l'écriture dans le journal",
23
30
  "Also accept Wyoming clients (TCP)": "Nous acceptons également les clients du Wyoming (TCP)",
31
+ "Also drive ESPHome voice satellites": "Piloter aussi les satellites vocaux ESPHome",
24
32
  "Announce when a timer expires": "Annoncez l'expiration du minuteur",
25
33
  "Announce when an alarm goes off": "Annoncez lorsqu'une alarme se déclenche.",
34
+ "Announcement targets (groups and people)": "Cibles des annonces (groupes et personnes)",
26
35
  "Answer simple commands locally (fast, offline)": "Répondre à des commandes simples en local (rapide, hors ligne)",
27
36
  "Anthropic (Claude)": "Anthropique (Claude)",
28
37
  "Any object (get_object/search_objects)": "Tout objet (get_object/search_objects)",
38
+ "Ask": "Question",
29
39
  "Azure Speech": "Discours azur",
30
40
  "Azure credential": "Identifiants Azure",
31
41
  "Azure region": "Région Azure",
32
42
  "Azure subscription key": "Clé d'abonnement Azure",
33
43
  "Azure voice (optional)": "Voix Azure (facultatif)",
34
44
  "Base URL (optional)": "URL de base (facultatif)",
45
+ "Before a trigger speaks, the model rewords its text so repeated announcements do not sound canned. Costs one small LLM call per announcement; the original text is used if it fails.": "Avant qu'un déclencheur ne parle, le modèle reformule son texte pour que les annonces répétées ne sonnent pas mécaniques. Coûte un petit appel au LLM par annonce ; en cas d'échec, le texte d'origine est utilisé.",
35
46
  "Bind address": "Adresse de liaison",
36
47
  "Canonical term": "Terme canonique",
37
48
  "Central credential store": "Magasin central d'accréditation",
49
+ "Condition as JSON: {\"state\":\"javascript.0.window\",\"value\":true} or {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; add \"also\"/\"unless\" for extra or blocking conditions, or use a list for alternatives. Say = announcement, Ask = question (needs response rules, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Extra actions as JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Delay waits before acting (90s/30m/5h), cooldown is the minimum gap between two firings in seconds (default 3600).": "Condition en JSON : {\"state\":\"javascript.0.window\",\"value\":true} ou {\"time\":\"23:00\",\"days\":[1,2,3,4,5]} ; ajoutez \"also\"/\"unless\" pour des conditions supplémentaires ou bloquantes, ou utilisez une liste pour des alternatives. Say = annonce, Ask = question (nécessite des règles de réponse, JSON : [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Actions supplémentaires en JSON : [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Le délai attend avant d'agir (90s/30m/5h), le temps de repos est l'écart minimal entre deux déclenchements en secondes (3600 par défaut).",
50
+ "Confirm switch commands with a beep": "Confirmer les commandes de commutation par un bip",
51
+ "Cooldown (s)": "Temps de repos (s)",
38
52
  "Credential mode": "Mode d'authentification",
39
53
  "DeepSeek": "DeepSeek",
54
+ "Delay": "Délai",
40
55
  "Devices": "Appareils",
41
56
  "Direct URL of a GGUF model. Leave empty for the default (Qwen2.5-1.5B-Instruct). Small models recommended on Raspberry Pi / arm64.": "URL directe d'un modèle GGUF. Laisser vide pour la valeur par défaut (Qwen2.5-1.5B-Instruct). Modèles légers recommandés pour Raspberry Pi / arm64.",
42
- "Downloads the engine and model (several hundred MB). Watch the instance log for progress.": "Téléchargement du moteur et du modèle (plusieurs centaines de Mo). Consultez le journal de l'instance pour suivre la progression.",
57
+ "Downloads the engine and model (several hundred MB). Progress is shown below.": "Télécharge le moteur et le modèle (plusieurs centaines de Mo). La progression s'affiche ci-dessous.",
58
+ "ESPHome satellites": "Satellites ESPHome",
59
+ "ESPHome satellites do not get the reply over their API socket — they fetch it as a URL. This is the port that small HTTP server listens on.": "Les satellites ESPHome ne reçoivent pas la réponse par leur socket API : ils la récupèrent via une URL. C’est le port sur lequel écoute ce petit serveur HTTP.",
43
60
  "Empty = tts-1. Also: tts-1-hd, gpt-4o-mini-tts.": "Vide = tts-1. Également : tts-1-hd, gpt-4o-mini-tts.",
44
61
  "Empty = whisper-1. Also: gpt-4o-transcribe, gpt-4o-mini-transcribe.": "Vide = whisper-1. Également : gpt-4o-transcribe, gpt-4o-mini-transcribe.",
45
62
  "Enable voice (STT/TTS for satellites)": "Activer la voix (STT/TTS pour les satellites)",
46
63
  "Enable voice server (satellites)": "Activer le serveur vocal (satellites)",
47
64
  "Enables speech recognition/synthesis. ioBroker-native satellites reach it over the message bus — no port needed. Turn on the UDP server below only for ESP / Hannah satellites.": "Permet la reconnaissance et la synthèse vocales. Les satellites natifs d'ioBroker y accèdent via le bus de messages ; aucun port n'est nécessaire. Activez le serveur UDP ci-dessous uniquement pour les satellites ESP/Hannah.",
65
+ "End of speech after (ms of silence)": "Fin de parole après (ms de silence)",
66
+ "Extra actions (JSON)": "Actions supplémentaires (JSON)",
67
+ "Give a set of satellites a name, so an announcement, a question or a trigger can address it: a group of rooms (\"Upstairs\") or the speakers that belong to one person (\"Denis\", so \"tell Denis dinner is ready\" reaches them). Members: satellite ids, room names or device names, separated by commas. Kind: empty or group, or person. A real satellite or room of the same name always wins, so a group can never make a speaker unreachable.": "Donnez un nom à un ensemble de satellites pour qu'une annonce, une question ou un déclencheur puisse s'y adresser : un groupe de pièces (\"À l'étage\") ou les haut-parleurs d'une personne (\"Denis\", pour que « dis à Denis que le dîner est prêt » lui parvienne). Membres : ids de satellites, noms de pièces ou d'appareils, séparés par des virgules. Type : vide ou group, ou person. Un vrai satellite ou une vraie pièce du même nom l'emporte toujours, un groupe ne peut donc jamais rendre un haut-parleur injoignable.",
48
68
  "Google Gemini": "Google Gemini",
49
69
  "Home Assistant Voice PE / wyoming-satellite / ESPHome voice devices can stream to this adapter over the Wyoming protocol.": "Les appareils vocaux Home Assistant Voice PE / wyoming-satellite / ESPHome peuvent diffuser du contenu vers cet adaptateur via le protocole Wyoming.",
70
+ "Home value (empty = auto)": "Valeur « à la maison » (vide = auto)",
71
+ "Host the satellites should fetch the audio from. Empty = use the address of each device connection automatically; set it only if the devices reach this machine under a different address (NAT, Docker, VLAN).": "Hôte depuis lequel les satellites doivent récupérer l’audio. Vide = utiliser automatiquement l’adresse de chaque connexion ; à renseigner uniquement si les appareils atteignent cette machine par une autre adresse (NAT, Docker, VLAN).",
72
+ "Id": "Id",
50
73
  "If off, the assistant can only read states, not set_state.": "Si la fonction est désactivée, l'assistant peut uniquement lire les états, et non pas définir l'état.",
51
74
  "Install local model": "Installer le modèle local",
52
75
  "Interface the UDP voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Interface sur laquelle le serveur vocal UDP écoute. 0.0.0.0 = toutes les interfaces ; choisissez une adresse IP hôte spécifique pour que les satellites du réseau local puissent l'atteindre.",
53
76
  "Interface the voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Interface sur laquelle le serveur vocal écoute. 0.0.0.0 = toutes les interfaces ; choisissez une adresse IP hôte spécifique pour que les satellites du réseau local puissent y accéder.",
54
77
  "Keep the last few turns per source (chat, telegram, satellite) for a few minutes so follow-ups like 'and the kitchen too' work. In-memory only.": "Conservez les derniers échanges par source (chat, télégramme, satellite) pendant quelques minutes afin que les suites de phrases comme « et la cuisine aussi » fonctionnent. Uniquement en mémoire.",
78
+ "Kind (group/person)": "Type (group/person)",
79
+ "Kind (person/guest/pet)": "Type (person/guest/pet)",
55
80
  "LLM assistant": "assistant de maîtrise en droit",
56
81
  "Language (empty = all)": "Langue (vide = tout)",
57
82
  "Language for speech recognition and the spoken reply.": "Langage pour la reconnaissance vocale et la réponse orale.",
58
83
  "Leave empty to reuse the main API key when the LLM provider is OpenAI; required otherwise.": "Laisser vide pour réutiliser la clé API principale lorsque le fournisseur LLM est OpenAI ; obligatoire dans le cas contraire.",
84
+ "Let the LLM reword trigger texts": "Laisser le LLM reformuler les textes des déclencheurs",
59
85
  "Lets the assistant durably remember facts you tell it (names, preferences, where things are) and use them in later conversations. Stored in the memory.* states; the LLM gets remember/forget tools.": "Permet à l'assistant de mémoriser durablement les informations que vous lui fournissez (noms, préférences, emplacement des objets) et de les utiliser lors de conversations ultérieures. Ces informations sont stockées dans la mémoire.* L'assistant dispose d'outils de mémorisation/oubli.",
60
86
  "Loaded from Azure (instance must run); empty = pick by language. e.g. de-DE-KatjaNeural.": "Chargé depuis Azure (l'instance doit être en cours d'exécution) ; vide = choisir par langue. Par exemple : de-DE-KatjaNeural.",
61
87
  "Loaded from Polly (instance must run); empty = default per language. e.g. Vicki, Tatyana.": "Chargé depuis Polly (l'instance doit être en cours d'exécution) ; vide = valeur par défaut pour chaque langue. Ex. : Vicki, Tatyana.",
@@ -65,10 +91,14 @@
65
91
  "Local speech (no cloud)": "Voix locale (sans cloud)",
66
92
  "Long-term memory (remember facts across sessions)": "Mémoire à long terme (se souvenir des faits d'une session à l'autre)",
67
93
  "Max tokens": "Jetons maximum",
94
+ "Media server address for the devices": "Adresse du serveur multimédia pour les appareils",
95
+ "Media server port": "Port du serveur multimédia",
68
96
  "Model": "Modèle",
69
97
  "Model name from alphacephei.com/vosk/models, e.g. vosk-model-small-de-0.15. Empty = small default per language.": "Nom du modèle provenant de alphacephei.com/vosk/models, par exemple vosk-model-small-de-0.15. Vide = petite valeur par défaut pour chaque langue.",
70
98
  "No sound": "Aucun son",
99
+ "None": "Aucun",
71
100
  "Object read access": "accès en lecture aux objets",
101
+ "One row per device. Port empty = 6053. The room is what the assistant treats the satellite as being in. Leave the password empty unless the device really has an API password set — table values are stored unencrypted.": "Une ligne par appareil. Port vide = 6053. La pièce est celle dans laquelle l’assistant situe le satellite. Laissez le mot de passe vide sauf si l’appareil a réellement un mot de passe API — les valeurs de tableau sont stockées en clair.",
72
102
  "Only devices, rooms, functions": "Seuls les appareils, les chambres et les fonctions",
73
103
  "OpenAI": "OpenAI",
74
104
  "OpenAI (Whisper)": "OpenAI (Whisper)",
@@ -80,25 +110,39 @@
80
110
  "OpenAI-compatible (custom)": "Compatible avec OpenAI (personnalisé)",
81
111
  "Opens a UDP port for streaming microphone satellites (Hannah-compatible / ESP). Not needed for ioBroker-native satellites.": "Ouvre un port UDP pour la diffusion des signaux des microphones satellites (compatibles Hannah/ESP). Non nécessaire pour les satellites natifs d'ioBroker.",
82
112
  "Override the endpoint, e.g. https://api.groq.com/openai/v1 for Groq. Leave empty for the provider default.": "Modifiez le point de terminaison, par exemple https://api.groq.com/openai/v1 pour Groq. Laissez ce champ vide pour utiliser la valeur par défaut du fournisseur.",
113
+ "Phrases (comma separated)": "Phrases (séparées par des virgules)",
83
114
  "Pick an installed weather adapter to answer weather questions from (Open-Meteo, Weather Underground, OpenWeatherMap are fully understood; others are read best-effort). Start that adapter once so its data/locations appear here.": "Choisissez un adaptateur météo installé pour répondre aux questions météo (OpenMeteo, Weather Underground et OpenWeatherMap sont entièrement reconnus ; les autres sont lus au mieux). Lancez cet adaptateur une fois pour que ses données/localisations s’affichent ici.",
84
115
  "Piper (local)": "Piper (local)",
85
116
  "Piper voice (optional)": "Voix de cornemuseur (facultatif)",
86
117
  "Play": "Jouer",
118
+ "Port": "Port",
119
+ "Presence": "Présence",
120
+ "Proactive triggers": "Déclencheurs proactifs",
87
121
  "Provider": "Fournisseur",
88
122
  "Remember the conversation (follow-up questions)": "Rappelez-vous la conversation (questions de suivi)",
123
+ "Reply": "Réponse",
124
+ "Response rules (JSON)": "Règles de réponse (JSON)",
125
+ "Reword system notifications": "Reformuler les notifications système",
89
126
  "Rewrite spoken or typed variants to your device/room names before local matching, e.g. \"TV\" to \"Fernseher\". Leave the language empty to apply to all languages. Also used for the text channels.": "Réécrivez les variantes orales ou écrites en utilisant le nom de votre appareil/salle avant la correspondance locale, par exemple « TV » devient « Fernseher ». Laissez le champ « langue » vide pour appliquer cette méthode à toutes les langues. Cette méthode s'applique également aux chaînes textuelles.",
90
127
  "Ring duration (seconds)": "Durée de la sonnerie (secondes)",
128
+ "Room": "Pièce",
129
+ "Routines": "Routines",
91
130
  "Run the UDP voice server (ESP / Hannah satellites)": "Lancer le serveur vocal UDP (satellites ESP / Hannah)",
92
131
  "Runs a small local model (node-llama-cpp) for general questions; escalates to the cloud LLM when it needs live device data. Install it with the button below.": "Exécute un petit modèle local (node-llama-cpp) pour les requêtes générales ; bascule vers le modèle LLM cloud lorsqu'il a besoin de données en direct de l'appareil. Installez-le avec le bouton ci-dessous.",
93
132
  "Said or typed": "dit ou tapé",
94
133
  "Satellites": "Satellites",
134
+ "Satellites, rooms or devices (comma separated)": "Satellites, pièces ou appareils (séparés par des virgules)",
135
+ "Say": "Annonce",
95
136
  "Settings": "Paramètres",
96
137
  "Speak an announcement on the satellite a countdown timer was set from (or on all satellites) when it runs out. Timers are always mirrored into the timers.* states for scripts and visualization.": "Diffusez une annonce sur le satellite à partir duquel le compte à rebours a été lancé (ou sur tous les satellites) lorsque celui-ci arrive à échéance. Les minuteurs sont toujours répliqués dans les états des minuteurs pour les scripts et la visualisation.",
97
138
  "Speak an announcement when an alarm at a fixed clock time fires. Alarms are always mirrored into the alarms.* states for scripts and visualization.": "Annoncez une alarme lorsqu'elle se déclenche à une heure fixe. Les alarmes sont toujours répliquées dans les états alarms.* pour les scripts et la visualisation.",
98
139
  "Speech credential mode": "Mode d'authentification vocale",
99
140
  "Speech-to-text and text-to-speech use OpenAI. Leave empty to reuse the main API key when the provider is OpenAI; required when the LLM provider is Anthropic or custom.": "La transcription vocale et la synthèse vocale utilisent OpenAI. Laissez ce champ vide pour réutiliser la clé API principale si le fournisseur est OpenAI ; ce champ est obligatoire si le fournisseur LLM est Anthropic ou personnalisé.",
141
+ "Speech-to-text fallback": "Reconnaissance vocale de secours",
100
142
  "Speech-to-text provider": "Fournisseur de transcription vocale",
143
+ "Spoken system notifications (notify.text / the ioBroker notification manager) are reworded by the LLM into one natural sentence first - their raw texts are written for a log viewer. Costs one small LLM call per notification; the original text is spoken if it fails. Urgent ones (notify.alert) are announced even when Do-Not-Disturb is on.": "Les notifications système parlées (notify.text / le gestionnaire de notifications d'ioBroker) sont d'abord reformulées par le LLM en une phrase naturelle - leurs textes bruts sont écrits pour un visualiseur de journaux. Coûte un petit appel au LLM par notification ; en cas d'échec, le texte d'origine est prononcé. Les notifications urgentes (notify.alert) sont annoncées même lorsque le mode Ne pas déranger est activé.",
101
144
  "Starts a UDP server for microphone satellites (Hannah-compatible protocol).": "Démarre un serveur UDP pour les satellites de microphone (protocole compatible Hannah).",
145
+ "State id": "Id de l'état",
102
146
  "Store key in adapter": "Rangez la clé dans l'adaptateur",
103
147
  "Store keys in adapter": "Rangez les clés dans l'adaptateur",
104
148
  "Synonym dictionary": "Dictionnaire des synonymes",
@@ -106,13 +150,20 @@
106
150
  "System prompt": "invite système",
107
151
  "TTS voice": "Voix TTS",
108
152
  "Test connection": "Test de connexion",
153
+ "Text-to-speech fallback": "Synthèse vocale de secours",
109
154
  "Text-to-speech provider": "fournisseur de synthèse vocale",
155
+ "These devices stream until the server stops them, so the adapter decides when you stopped talking. Raise it if replies cut you off, lower it if the assistant waits too long.": "Ces appareils émettent jusqu’à ce que le serveur les arrête : c’est donc l’adaptateur qui décide quand vous avez fini de parler. Augmentez si la réponse vous coupe, diminuez si l’assistant attend trop longtemps.",
156
+ "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. These devices listen on TCP 6053 and the adapter dials them, so no port is opened for the audio itself — only the media server below, which they fetch the spoken reply from.": "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. Ces appareils écoutent sur le TCP 6053 et c’est l’adaptateur qui les appelle : aucun port n’est donc ouvert pour l’audio lui-même, seulement le serveur multimédia ci-dessous, d’où ils récupèrent la réponse parlée.",
110
157
  "Timer sound (mp3/wav, optional)": "Son de minuterie (mp3/wav, optionnel)",
158
+ "Triggers": "Déclencheurs",
111
159
  "Try the built-in rule-based intent matching for turn on/off, dimming and status before calling the LLM.": "Essayez la correspondance d'intentions basée sur des règles intégrées pour l'allumage/l'extinction, la variation d'intensité et l'état avant d'appeler le LLM.",
112
160
  "Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "Deux sons par défaut (timer.wav, alarm.wav) sont préinstallés ; choisissez-en un ci-dessous ou téléchargez votre propre fichier mp3/wav. Le son sélectionné sera diffusé avant l’annonce vocale. Nécessite ffmpeg sur l’hôte et au moins un satellite.",
113
161
  "UDP port": "port UDP",
114
162
  "Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Téléversez vos jingles MP3/WAV ci-dessous ; le son sélectionné sera diffusé avant l’annonce vocale. ffmpeg doit être installé sur le serveur hôte et au moins un satellite est requis.",
115
163
  "Use a local LLM before the cloud (installed on demand)": "Utilisez un LLM local avant le cloud (installé à la demande)",
164
+ "Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Utilisé lorsque le fournisseur ci-dessus échoue (panne, clé expirée, quota épuisé). Un moteur local permet à la commande vocale de fonctionner sans Internet.",
165
+ "Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Utilisé lorsque le fournisseur ci-dessus échoue. Piper permet à l'assistant de continuer à parler sans Internet.",
166
+ "Verify device feedback": "Vérifier le retour de l'appareil",
116
167
  "Voice": "Voix",
117
168
  "Voice language": "Langue vocale",
118
169
  "Voice satellites": "satellites vocaux",
@@ -120,11 +171,16 @@
120
171
  "Vosk (local)": "Vosk (local)",
121
172
  "Vosk model (optional)": "Modèle Vosk (en option)",
122
173
  "Weather source": "Source météorologique",
174
+ "When (JSON)": "Quand (JSON)",
175
+ "Which states tell the assistant who is at home - one row per person. Any state works: the residents adapter, a phone ping like ping.0.phone-denis.alive, a router client state or your own flag. Kind: empty or person, guest, pet (a pet never makes the house occupied). Home value: leave empty for the usual forms (true, 1, \"home\", \"anwesend\"), or enter the exact value that means at home. Used to tell the LLM who is around, to hold back announcements to an empty house (notify with onlyWhenHome) and as a trigger source via presence.anyoneHome.": "Quels états indiquent à l'assistant qui est à la maison - une ligne par personne. N'importe quel état convient : l'adaptateur residents, un ping du téléphone comme ping.0.phone-denis.alive, un état client du routeur ou votre propre indicateur. Type : vide ou person, guest, pet (un animal ne rend jamais la maison occupée). Valeur « à la maison » : laissez vide pour les formes habituelles (true, 1, \"home\", \"anwesend\"), ou saisissez la valeur exacte qui signifie à la maison. Sert à indiquer au LLM qui est présent, à retenir les annonces dans une maison vide (notify avec onlyWhenHome) et comme source de déclenchement via presence.anyoneHome.",
123
176
  "Wyoming TCP port": "Port TCP du Wyoming",
124
177
  "e.g. Vicki (de), Tatyana (ru), Joanna (en). Empty = default per language.": "par ex. Vicki (de), Tatyana (ru), Joanna (en). Vide = valeur par défaut par langue.",
125
178
  "e.g. de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Empty = pick by language.": "Ex. : de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Vide = choisir par langue.",
126
179
  "e.g. de_DE-thorsten-medium, ru_RU-irina-medium. Empty = default per language.": "Par exemple : de_DE-thorsten-medium, ru_RU-irina-medium. Vide = valeur par défaut pour chaque langue.",
127
180
  "e.g. eu-central-1": "par exemple eu-central-1",
128
181
  "e.g. gpt-4o-mini, gpt-4o, claude-sonnet-4-6": "par ex. gpt-4o-mini, gpt-4o, claude-sonnet-4-6",
129
- "e.g. westeurope": "par exemple, l'Europe de l'Ouest"
130
- }
182
+ "e.g. westeurope": "par exemple, l'Europe de l'Ouest",
183
+ "None (local only)": "Aucun (local uniquement)",
184
+ "Without an LLM provider only the local tiers answer: the rule-based commands, routines, timers and alarms, and the local model if enabled. Anything else gets a short \"I can't do that\" reply.": "Sans fournisseur LLM, seuls les niveaux locaux répondent : les commandes à base de règles, les routines, les minuteurs et alarmes, ainsi que le modèle local s'il est activé. Tout le reste reçoit une courte réponse « Je ne peux pas faire ça ».",
185
+ "Chat": "Chat"
186
+ }
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "A fired timer/alarm keeps ringing (looping the sound) for up to this long, or until you say 'stop'/'halt'/'aufhören'/'cancel' (or write the stopRinging state). 0 = play the sound once.": "Un timer/allarme attivato continua a suonare (il suono si ripete ciclicamente) per un periodo massimo di tempo definito, oppure finché non si pronuncia 'stop'/'halt'/'aufhören'/'cancel' (o non si imposta lo stato stopRinging). 0 = il suono viene riprodotto una sola volta.",
3
+ "A phrase that runs a list of actions: \"Gute Nacht\" switches off five things and answers once. Phrases: several separated by commas (matched anywhere in the sentence, upper/lower case and umlauts do not matter). Actions as JSON, same shape as a trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Reply: what the assistant answers (leave empty to stay silent). Matched before the offline rule engine and before the LLM, so a routine is never reinterpreted.": "Una frase che esegue un elenco di azioni: \"Gute Nacht\" spegne cinque cose e risponde una volta sola. Frasi: più frasi separate da virgole (riconosciute in qualsiasi punto della frase, maiuscole/minuscole e dieresi non contano). Azioni in JSON, stesso formato di un trigger: [{\"setState\":{\"id\":\"hm-rpc.0.ABC.1.STATE\",\"value\":false}},{\"say\":\"Schlaf gut\",\"room\":\"Schlafzimmer\"}]. Risposta: cosa risponde l'assistente (lascia vuoto per non dire nulla). Verificata prima del motore di regole offline e prima dell'LLM, quindi una routine non viene mai reinterpretata.",
4
+ "A successful switch command is confirmed by a short tone on the satellite instead of a spoken sentence - instant, where speaking costs a text-to-speech call. Questions, errors and the text channels are unaffected.": "Un comando di commutazione riuscito viene confermato con un breve tono sul satellite invece che con una frase parlata - istantaneo, mentre parlare costa una chiamata di sintesi vocale. Domande, errori e canali di testo non sono interessati.",
5
+ "A trigger watches states or the clock and then speaks, writes a state, or asks you a question and acts on your answer. Switch single triggers off at runtime with triggers.items.<id>.enabled, test one with its fire button, and all of them with triggers.enabled.": "Un trigger osserva stati o l'orologio e poi parla, scrive uno stato o ti fa una domanda e agisce in base alla tua risposta. Disattiva i singoli trigger durante l'esecuzione con triggers.items.<id>.enabled, provane uno con il suo pulsante fire e tutti insieme con triggers.enabled.",
3
6
  "API key": "Chiave API",
7
+ "API password (usually empty)": "Password API (di norma vuota)",
4
8
  "API-key credential": "Credenziali della chiave API",
5
9
  "AWS Polly": "AWS Polly",
6
10
  "AWS Polly voice (optional)": "AWS Polly Voice (opzionale)",
@@ -11,6 +15,9 @@
11
15
  "AWS secret access key": "Chiave di accesso segreta AWS",
12
16
  "AWS speech": "Discorso AWS",
13
17
  "Access / permissions": "Accesso / autorizzazioni",
18
+ "Actions (JSON)": "Azioni (JSON)",
19
+ "Address (IP or host name)": "Indirizzo (IP o nome host)",
20
+ "After a switch command, wait up to 2 seconds for the device to acknowledge the new value (ack:true) and report \"did not respond\" if it never does. Leave this off for devices that never acknowledge (MQTT, scripts, 0_userdata) - every command would look failed.": "Dopo un comando di commutazione, attendi fino a 2 secondi che il dispositivo confermi il nuovo valore (ack:true) e segnala \"non ha risposto\" se non lo fa mai. Lascia disattivato per i dispositivi che non confermano mai (MQTT, script, 0_userdata) - altrimenti ogni comando sembrerebbe fallito.",
14
21
  "Alarm sound (mp3/wav, optional)": "Suono di allarme (mp3/wav, facoltativo)",
15
22
  "Allow changing objects and files (dangerous)": "Consenti la modifica di oggetti e file (pericoloso)",
16
23
  "Allow controlling states": "Consentire agli stati di controllo",
@@ -21,41 +28,60 @@
21
28
  "Allow writing states (control devices)": "Consenti la scrittura degli stati (dispositivi di controllo)",
22
29
  "Allow writing to the log": "Consenti la scrittura nel registro",
23
30
  "Also accept Wyoming clients (TCP)": "Accettiamo anche clienti del Wyoming (TCP).",
31
+ "Also drive ESPHome voice satellites": "Pilota anche i satelliti vocali ESPHome",
24
32
  "Announce when a timer expires": "Avvisa quando un timer scade",
25
33
  "Announce when an alarm goes off": "Avvisa quando suona un allarme",
34
+ "Announcement targets (groups and people)": "Destinatari degli annunci (gruppi e persone)",
26
35
  "Answer simple commands locally (fast, offline)": "Rispondi a semplici comandi in locale (velocemente, offline)",
27
36
  "Anthropic (Claude)": "Antropico (Claude)",
28
37
  "Any object (get_object/search_objects)": "Qualsiasi oggetto (get_object/search_objects)",
38
+ "Ask": "Domanda",
29
39
  "Azure Speech": "Discorso Azure",
30
40
  "Azure credential": "Credenziali Azure",
31
41
  "Azure region": "regione Azure",
32
42
  "Azure subscription key": "Chiave di sottoscrizione di Azure",
33
43
  "Azure voice (optional)": "Voce di Azure (facoltativo)",
34
44
  "Base URL (optional)": "URL di base (facoltativo)",
45
+ "Before a trigger speaks, the model rewords its text so repeated announcements do not sound canned. Costs one small LLM call per announcement; the original text is used if it fails.": "Prima che un trigger parli, il modello riformula il testo in modo che gli annunci ripetuti non suonino preconfezionati. Costa una piccola chiamata all'LLM per annuncio; se fallisce, viene usato il testo originale.",
35
46
  "Bind address": "Indirizzo di collegamento",
36
47
  "Canonical term": "Termine canonico",
37
48
  "Central credential store": "Archivio centrale delle credenziali",
49
+ "Condition as JSON: {\"state\":\"javascript.0.window\",\"value\":true} or {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; add \"also\"/\"unless\" for extra or blocking conditions, or use a list for alternatives. Say = announcement, Ask = question (needs response rules, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Extra actions as JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Delay waits before acting (90s/30m/5h), cooldown is the minimum gap between two firings in seconds (default 3600).": "Condizione in JSON: {\"state\":\"javascript.0.window\",\"value\":true} oppure {\"time\":\"23:00\",\"days\":[1,2,3,4,5]}; aggiungi \"also\"/\"unless\" per condizioni aggiuntive o bloccanti, oppure usa un elenco per le alternative. Say = annuncio, Ask = domanda (richiede regole di risposta, JSON: [{\"match\":\"agreement\",\"say\":\"Okay\",\"setState\":{\"id\":\"...\",\"value\":false}}]). Azioni aggiuntive in JSON: [{\"setState\":{\"id\":\"...\",\"value\":false}}]. Il ritardo attende prima di agire (90s/30m/5h), il cooldown è l'intervallo minimo tra due attivazioni in secondi (predefinito 3600).",
50
+ "Confirm switch commands with a beep": "Conferma i comandi di commutazione con un bip",
51
+ "Cooldown (s)": "Cooldown (s)",
38
52
  "Credential mode": "Modalità credenziali",
39
53
  "DeepSeek": "Ricerca profonda",
54
+ "Delay": "Ritardo",
40
55
  "Devices": "Dispositivi",
41
56
  "Direct URL of a GGUF model. Leave empty for the default (Qwen2.5-1.5B-Instruct). Small models recommended on Raspberry Pi / arm64.": "URL diretto di un modello GGUF. Lasciare vuoto per utilizzare il valore predefinito (Qwen2.5-1.5B-Instruct). Si consigliano modelli di piccole dimensioni su Raspberry Pi / arm64.",
42
- "Downloads the engine and model (several hundred MB). Watch the instance log for progress.": "Scarica il motore e il modello (diverse centinaia di MB). Controlla il registro dell'istanza per monitorare l'avanzamento.",
57
+ "Downloads the engine and model (several hundred MB). Progress is shown below.": "Scarica il motore e il modello (diverse centinaia di MB). L'avanzamento è mostrato qui sotto.",
58
+ "ESPHome satellites": "Satelliti ESPHome",
59
+ "ESPHome satellites do not get the reply over their API socket — they fetch it as a URL. This is the port that small HTTP server listens on.": "I satelliti ESPHome non ricevono la risposta dal loro socket API: la scaricano come URL. Questa è la porta su cui ascolta quel piccolo server HTTP.",
43
60
  "Empty = tts-1. Also: tts-1-hd, gpt-4o-mini-tts.": "Vuoto = tts-1. Anche: tts-1-hd, gpt-4o-mini-tts.",
44
61
  "Empty = whisper-1. Also: gpt-4o-transcribe, gpt-4o-mini-transcribe.": "Vuoto = whisper-1. Anche: gpt-4o-transcribe, gpt-4o-mini-transcribe.",
45
62
  "Enable voice (STT/TTS for satellites)": "Abilita la voce (STT/TTS per i satelliti)",
46
63
  "Enable voice server (satellites)": "Abilita il server vocale (satelliti)",
47
64
  "Enables speech recognition/synthesis. ioBroker-native satellites reach it over the message bus — no port needed. Turn on the UDP server below only for ESP / Hannah satellites.": "Abilita il riconoscimento/sintesi vocale. I satelliti nativi di ioBroker lo raggiungono tramite il bus di messaggi, senza bisogno di porte. Attivare il server UDP qui sotto solo per i satelliti ESP/Hannah.",
65
+ "End of speech after (ms of silence)": "Fine del parlato dopo (ms di silenzio)",
66
+ "Extra actions (JSON)": "Azioni aggiuntive (JSON)",
67
+ "Give a set of satellites a name, so an announcement, a question or a trigger can address it: a group of rooms (\"Upstairs\") or the speakers that belong to one person (\"Denis\", so \"tell Denis dinner is ready\" reaches them). Members: satellite ids, room names or device names, separated by commas. Kind: empty or group, or person. A real satellite or room of the same name always wins, so a group can never make a speaker unreachable.": "Dai un nome a un insieme di satelliti, così un annuncio, una domanda o un trigger può rivolgersi a esso: un gruppo di stanze (\"Piano di sopra\") o gli altoparlanti di una persona (\"Denis\", così \"di' a Denis che la cena è pronta\" arriva a loro). Membri: id dei satelliti, nomi delle stanze o dei dispositivi, separati da virgole. Tipo: vuoto o group, oppure person. Un satellite o una stanza reale con lo stesso nome ha sempre la precedenza, quindi un gruppo non può mai rendere irraggiungibile un altoparlante.",
48
68
  "Google Gemini": "Google Gemini",
49
69
  "Home Assistant Voice PE / wyoming-satellite / ESPHome voice devices can stream to this adapter over the Wyoming protocol.": "I dispositivi vocali Home Assistant Voice PE / wyoming-satellite / ESPHome possono trasmettere in streaming a questo adattatore tramite il protocollo Wyoming.",
70
+ "Home value (empty = auto)": "Valore \"a casa\" (vuoto = automatico)",
71
+ "Host the satellites should fetch the audio from. Empty = use the address of each device connection automatically; set it only if the devices reach this machine under a different address (NAT, Docker, VLAN).": "Host da cui i satelliti devono scaricare l’audio. Vuoto = usa automaticamente l’indirizzo di ogni connessione; impostalo solo se i dispositivi raggiungono questa macchina a un indirizzo diverso (NAT, Docker, VLAN).",
72
+ "Id": "Id",
50
73
  "If off, the assistant can only read states, not set_state.": "Se disattivato, l'assistente può solo leggere gli stati, non impostare lo stato.",
51
74
  "Install local model": "Installa il modello locale",
52
75
  "Interface the UDP voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Interfaccia su cui il server vocale UDP è in ascolto. 0.0.0.0 = tutte le interfacce; selezionare un indirizzo IP host specifico in modo che i dispositivi satellite sulla LAN possano raggiungerlo.",
53
76
  "Interface the voice server listens on. 0.0.0.0 = all interfaces; pick a specific host IP so satellites on the LAN can reach it.": "Interfaccia su cui il server vocale è in ascolto. 0.0.0.0 = tutte le interfacce; selezionare un indirizzo IP host specifico in modo che i satelliti sulla LAN possano raggiungerlo.",
54
77
  "Keep the last few turns per source (chat, telegram, satellite) for a few minutes so follow-ups like 'and the kitchen too' work. In-memory only.": "Mantieni gli ultimi turni per ogni fonte (chat, telegramma, satellite) per alcuni minuti in modo che i successivi come \"e anche la cucina\" funzionino. Solo in memoria.",
78
+ "Kind (group/person)": "Tipo (group/person)",
79
+ "Kind (person/guest/pet)": "Tipo (person/guest/pet)",
55
80
  "LLM assistant": "Assistente LLM",
56
81
  "Language (empty = all)": "Lingua (vuoto = tutto)",
57
82
  "Language for speech recognition and the spoken reply.": "Linguaggio per il riconoscimento vocale e la risposta vocale.",
58
83
  "Leave empty to reuse the main API key when the LLM provider is OpenAI; required otherwise.": "Lasciare vuoto per riutilizzare la chiave API principale quando il provider LLM è OpenAI; altrimenti è obbligatorio.",
84
+ "Let the LLM reword trigger texts": "Fai riformulare i testi dei trigger all'LLM",
59
85
  "Lets the assistant durably remember facts you tell it (names, preferences, where things are) and use them in later conversations. Stored in the memory.* states; the LLM gets remember/forget tools.": "Consente all'assistente di ricordare in modo permanente le informazioni che gli fornisci (nomi, preferenze, posizione degli oggetti) e di utilizzarle nelle conversazioni successive. Memorizzato nella memoria.* stati; LLM ottiene strumenti di memorizzazione/dimenticanza.",
60
86
  "Loaded from Azure (instance must run); empty = pick by language. e.g. de-DE-KatjaNeural.": "Caricato da Azure (l'istanza deve essere in esecuzione); vuoto = seleziona in base alla lingua. Ad esempio de-DE-KatjaNeural.",
61
87
  "Loaded from Polly (instance must run); empty = default per language. e.g. Vicki, Tatyana.": "Caricato da Polly (l'istanza deve essere in esecuzione); vuoto = valore predefinito per lingua. Ad esempio, Vicki, Tatyana.",
@@ -65,10 +91,14 @@
65
91
  "Local speech (no cloud)": "Discorso locale (senza nuvole)",
66
92
  "Long-term memory (remember facts across sessions)": "Memoria a lungo termine (ricordare i fatti tra una sessione e l'altra)",
67
93
  "Max tokens": "Numero massimo di token",
94
+ "Media server address for the devices": "Indirizzo del media server per i dispositivi",
95
+ "Media server port": "Porta del media server",
68
96
  "Model": "Modello",
69
97
  "Model name from alphacephei.com/vosk/models, e.g. vosk-model-small-de-0.15. Empty = small default per language.": "Nome del modello da alphacephei.com/vosk/models, ad esempio vosk-model-small-de-0.15. Vuoto = modello piccolo predefinito per ogni lingua.",
70
98
  "No sound": "Nessun suono",
99
+ "None": "Nessuno",
71
100
  "Object read access": "accesso in lettura all'oggetto",
101
+ "One row per device. Port empty = 6053. The room is what the assistant treats the satellite as being in. Leave the password empty unless the device really has an API password set — table values are stored unencrypted.": "Una riga per dispositivo. Porta vuota = 6053. La stanza è quella in cui l’assistente colloca il satellite. Lascia vuota la password a meno che il dispositivo non abbia davvero una password API — i valori di tabella sono salvati in chiaro.",
72
102
  "Only devices, rooms, functions": "Solo dispositivi, stanze, funzioni",
73
103
  "OpenAI": "OpenAI",
74
104
  "OpenAI (Whisper)": "OpenAI (Whisper)",
@@ -80,25 +110,39 @@
80
110
  "OpenAI-compatible (custom)": "Compatibile con OpenAI (personalizzato)",
81
111
  "Opens a UDP port for streaming microphone satellites (Hannah-compatible / ESP). Not needed for ioBroker-native satellites.": "Apre una porta UDP per i satelliti del microfono in streaming (compatibili con Hannah / ESP). Non necessario per i satelliti nativi di ioBroker.",
82
112
  "Override the endpoint, e.g. https://api.groq.com/openai/v1 for Groq. Leave empty for the provider default.": "Sovrascrivi l'endpoint, ad esempio https://api.groq.com/openai/v1 per Groq. Lascia vuoto il campo predefinito del provider.",
113
+ "Phrases (comma separated)": "Frasi (separate da virgole)",
83
114
  "Pick an installed weather adapter to answer weather questions from (Open-Meteo, Weather Underground, OpenWeatherMap are fully understood; others are read best-effort). Start that adapter once so its data/locations appear here.": "Seleziona un adattatore meteo installato per rispondere alle domande sul meteo (Open-Meteo, Weather Underground e OpenWeatherMap sono supportati a pieno; per gli altri, la lettura è al meglio delle possibilità). Avvia l'adattatore una volta in modo che i suoi dati/posizioni vengano visualizzati qui.",
84
115
  "Piper (local)": "Piper (locale)",
85
116
  "Piper voice (optional)": "Voce da suonatore di cornamusa (facoltativa)",
86
117
  "Play": "Giocare",
118
+ "Port": "Porta",
119
+ "Presence": "Presenza",
120
+ "Proactive triggers": "Trigger proattivi",
87
121
  "Provider": "Fornitore",
88
122
  "Remember the conversation (follow-up questions)": "Ricorda la conversazione (domande di approfondimento)",
123
+ "Reply": "Risposta",
124
+ "Response rules (JSON)": "Regole di risposta (JSON)",
125
+ "Reword system notifications": "Riformula le notifiche di sistema",
89
126
  "Rewrite spoken or typed variants to your device/room names before local matching, e.g. \"TV\" to \"Fernseher\". Leave the language empty to apply to all languages. Also used for the text channels.": "Riscrivi le varianti vocali o digitate con i nomi del tuo dispositivo/stanza prima della corrispondenza locale, ad esempio \"TV\" in \"Fernseher\". Lascia vuoto il campo della lingua per applicare la funzione a tutte le lingue. Utilizzato anche per i canali di testo.",
90
127
  "Ring duration (seconds)": "Durata dello squillo (secondi)",
128
+ "Room": "Stanza",
129
+ "Routines": "Routine",
91
130
  "Run the UDP voice server (ESP / Hannah satellites)": "Avviare il server vocale UDP (satelliti ESP/Hannah)",
92
131
  "Runs a small local model (node-llama-cpp) for general questions; escalates to the cloud LLM when it needs live device data. Install it with the button below.": "Esegue un piccolo modello locale (node-llama-cpp) per domande generiche; passa al modello LLM cloud quando necessita di dati in tempo reale dal dispositivo. Installalo tramite il pulsante qui sotto.",
93
132
  "Said or typed": "Detto o digitato",
94
133
  "Satellites": "Satelliti",
134
+ "Satellites, rooms or devices (comma separated)": "Satelliti, stanze o dispositivi (separati da virgole)",
135
+ "Say": "Annuncio",
95
136
  "Settings": "Impostazioni",
96
137
  "Speak an announcement on the satellite a countdown timer was set from (or on all satellites) when it runs out. Timers are always mirrored into the timers.* states for scripts and visualization.": "Pronuncia un annuncio sul satellite da cui è stato impostato un timer per il conto alla rovescia (o su tutti i satelliti) quando scade. I timer sono sempre replicati negli stati timers.* per script e visualizzazione.",
97
138
  "Speak an announcement when an alarm at a fixed clock time fires. Alarms are always mirrored into the alarms.* states for scripts and visualization.": "Pronuncia un annuncio quando si attiva un allarme a un orario prestabilito. Gli allarmi vengono sempre replicati negli stati alarms.* per script e visualizzazione.",
98
139
  "Speech credential mode": "Modalità credenziali vocali",
99
140
  "Speech-to-text and text-to-speech use OpenAI. Leave empty to reuse the main API key when the provider is OpenAI; required when the LLM provider is Anthropic or custom.": "La conversione da parlato a testo e da testo a parlato utilizza OpenAI. Lasciare vuoto per riutilizzare la chiave API principale quando il provider è OpenAI; obbligatorio quando il provider LLM è Anthropic o personalizzato.",
141
+ "Speech-to-text fallback": "Riconoscimento vocale di riserva",
100
142
  "Speech-to-text provider": "Fornitore di servizi di riconoscimento vocale",
143
+ "Spoken system notifications (notify.text / the ioBroker notification manager) are reworded by the LLM into one natural sentence first - their raw texts are written for a log viewer. Costs one small LLM call per notification; the original text is spoken if it fails. Urgent ones (notify.alert) are announced even when Do-Not-Disturb is on.": "Le notifiche di sistema pronunciate (notify.text / il gestore notifiche di ioBroker) vengono prima riformulate dall'LLM in un'unica frase naturale - i loro testi grezzi sono scritti per un visualizzatore di log. Costa una piccola chiamata all'LLM per notifica; se fallisce, viene pronunciato il testo originale. Quelle urgenti (notify.alert) vengono annunciate anche con Non disturbare attivo.",
101
144
  "Starts a UDP server for microphone satellites (Hannah-compatible protocol).": "Avvia un server UDP per i satelliti del microfono (protocollo compatibile con Hannah).",
145
+ "State id": "Id dello stato",
102
146
  "Store key in adapter": "Conservare la chiave nell'adattatore",
103
147
  "Store keys in adapter": "Conserva le chiavi nell'adattatore",
104
148
  "Synonym dictionary": "Dizionario dei sinonimi",
@@ -106,13 +150,20 @@
106
150
  "System prompt": "Richiesta di sistema",
107
151
  "TTS voice": "Sintesi vocale",
108
152
  "Test connection": "Verifica la connessione",
153
+ "Text-to-speech fallback": "Sintesi vocale di riserva",
109
154
  "Text-to-speech provider": "Fornitore di sintesi vocale",
155
+ "These devices stream until the server stops them, so the adapter decides when you stopped talking. Raise it if replies cut you off, lower it if the assistant waits too long.": "Questi dispositivi trasmettono finché il server non li ferma, quindi è l’adapter a decidere quando hai smesso di parlare. Aumenta se la risposta ti interrompe, riduci se l’assistente attende troppo.",
156
+ "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. These devices listen on TCP 6053 and the adapter dials them, so no port is opened for the audio itself — only the media server below, which they fetch the spoken reply from.": "ThirdReality Voice & Music Assistant, Home Assistant Voice PE, linux-voice-assistant. Questi dispositivi ascoltano sulla TCP 6053 ed è l’adapter a contattarli, quindi per l’audio non viene aperta alcuna porta: solo il media server qui sotto, da cui scaricano la risposta parlata.",
110
157
  "Timer sound (mp3/wav, optional)": "Suono del timer (mp3/wav, facoltativo)",
158
+ "Triggers": "Trigger",
111
159
  "Try the built-in rule-based intent matching for turn on/off, dimming and status before calling the LLM.": "Prima di chiamare LLM, prova la corrispondenza degli intenti basata su regole integrate per accensione/spegnimento, attenuazione e stato.",
112
160
  "Two default sounds (timer.wav, alarm.wav) are preinstalled — pick one below or upload your own mp3/wav. The selected sound plays before the spoken announcement. Needs ffmpeg on the host and at least one satellite.": "Sono preinstallati due suoni predefiniti (timer.wav, alarm.wav): scegline uno qui sotto oppure carica il tuo file mp3/wav. Il suono selezionato verrà riprodotto prima dell'annuncio vocale. Richiede ffmpeg sul computer host e su almeno un satellite.",
113
161
  "UDP port": "porta UDP",
114
162
  "Upload mp3/wav jingles below; the selected sound plays before the spoken announcement. Needs ffmpeg installed on the host and at least one satellite.": "Carica i jingle in formato mp3/wav qui sotto; il suono selezionato verrà riprodotto prima dell'annuncio vocale. È necessario che ffmpeg sia installato sul computer host e su almeno un satellite.",
115
163
  "Use a local LLM before the cloud (installed on demand)": "Utilizzare un LLM locale prima del cloud (installato su richiesta).",
164
+ "Used when the provider above fails (outage, expired key, empty quota). A local engine keeps voice working without the internet.": "Usato quando il provider sopra non funziona (interruzione, chiave scaduta, credito esaurito). Un motore locale mantiene attivo il controllo vocale senza internet.",
165
+ "Used when the provider above fails. Piper keeps the assistant speaking without the internet.": "Usato quando il provider sopra non funziona. Piper fa parlare l'assistente anche senza internet.",
166
+ "Verify device feedback": "Verifica il riscontro del dispositivo",
116
167
  "Voice": "Voce",
117
168
  "Voice language": "Lingua vocale",
118
169
  "Voice satellites": "Satelliti vocali",
@@ -120,11 +171,16 @@
120
171
  "Vosk (local)": "Vosk (locale)",
121
172
  "Vosk model (optional)": "Modello Vosk (opzionale)",
122
173
  "Weather source": "Fonte meteo",
174
+ "When (JSON)": "Quando (JSON)",
175
+ "Which states tell the assistant who is at home - one row per person. Any state works: the residents adapter, a phone ping like ping.0.phone-denis.alive, a router client state or your own flag. Kind: empty or person, guest, pet (a pet never makes the house occupied). Home value: leave empty for the usual forms (true, 1, \"home\", \"anwesend\"), or enter the exact value that means at home. Used to tell the LLM who is around, to hold back announcements to an empty house (notify with onlyWhenHome) and as a trigger source via presence.anyoneHome.": "Quali stati dicono all'assistente chi è a casa - una riga per persona. Va bene qualsiasi stato: l'adattatore residents, un ping del telefono come ping.0.phone-denis.alive, uno stato client del router o un tuo flag. Tipo: vuoto o person, guest, pet (un animale domestico non rende mai la casa occupata). Valore \"a casa\": lascia vuoto per le forme usuali (true, 1, \"home\", \"anwesend\"), oppure inserisci il valore esatto che significa a casa. Serve a dire all'LLM chi c'è, a trattenere gli annunci quando la casa è vuota (notify con onlyWhenHome) e come sorgente di trigger tramite presence.anyoneHome.",
123
176
  "Wyoming TCP port": "Porta TCP del Wyoming",
124
177
  "e.g. Vicki (de), Tatyana (ru), Joanna (en). Empty = default per language.": "per esempio. Vicki (de), Tatyana (ru), Joanna (en). Vuoto = predefinito per lingua.",
125
178
  "e.g. de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Empty = pick by language.": "ad esempio de-DE-KatjaNeural, ru-RU-SvetlanaNeural. Vuoto = seleziona in base alla lingua.",
126
179
  "e.g. de_DE-thorsten-medium, ru_RU-irina-medium. Empty = default per language.": "ad esempio de_DE-thorsten-medium, ru_RU-irina-medium. Vuoto = valore predefinito per lingua.",
127
180
  "e.g. eu-central-1": "ad esempio eu-central-1",
128
181
  "e.g. gpt-4o-mini, gpt-4o, claude-sonnet-4-6": "per esempio. gpt-4o-mini, gpt-4o, claude-sonetto-4-6",
129
- "e.g. westeurope": "ad esempio l'Europa occidentale"
130
- }
182
+ "e.g. westeurope": "ad esempio l'Europa occidentale",
183
+ "None (local only)": "Nessuno (solo locale)",
184
+ "Without an LLM provider only the local tiers answer: the rule-based commands, routines, timers and alarms, and the local model if enabled. Anything else gets a short \"I can't do that\" reply.": "Senza un provider LLM rispondono solo i livelli locali: i comandi basati su regole, le routine, i timer e le sveglie e il modello locale, se attivato. Tutto il resto riceve una breve risposta «Non posso farlo».",
185
+ "Chat": "Chat"
186
+ }