Domoticz et shelly

Forum dédié au protocole MQTT : fonctionnement, intégration ...
Pour les questions concernant le plugin de FlyingDomotic, merci d'utiliser le sous-forum dédié.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Domoticz et shelly

Message par Neutrino »

J'ai un bouton Library quand je clique sur script :
Capture d’écran du 2023-01-02 20-04-48.png
Capture d’écran du 2023-01-02 20-04-48.png (17.71 Kio) Consulté 5495 fois
Version 0.12.0
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
audi68
Messages : 139
Inscription : 08 nov. 2020, 20:16

Re: Domoticz et shelly

Message par audi68 »

voila j'ai rajouté le script c'est bien celui ci?
je suis en meme version que toi.

Par contre ça ne fonctionne pas dans domoticz
J'ai redémarrer domoticz et le shelly a chaque modification

ci joint les 2 capture domoticz
J'ai bien Mqtt auto activé?
Dans identifiant de MDP de je met rien si j'ai rien mis dans mosquito?
Pièces jointes
Capture d’écran 2023-01-02 203835.png
Capture d’écran 2023-01-02 203835.png (16.56 Kio) Consulté 5484 fois
Capture d’écran 2023-01-02 203941.png
Capture d’écran 2023-01-02 203941.png (16.92 Kio) Consulté 5484 fois
Capture d’écran 2023-01-02 204001.png
Capture d’écran 2023-01-02 204001.png (22.7 Kio) Consulté 5484 fois
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Domoticz et shelly

Message par Neutrino »

Le préfixe à mettre, c'est homeassistant
Voici le script qui tourne chez moi :

Code : Tout sélectionner

// Copyright 2021 Allterco Robotics EOOD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Shelly is a Trademark of Allterco Robotics

// Shelly 1 Plus MQTT Auto Discovery in Home Assistant/Domoticz + Gen1 MQTT paths
//
// This script is registering a virtual switch device for the relay, a binary_sensor for button
// and a sensor Temperature default with 30 sec update
//
// shellies/<model>-<deviceid>/relay/0 to report status: on, off
// shellies/<model>-<deviceid>/relay/0/command accepts on, off and applies accordingly
// shellies/<model>-<deviceid>/input/0 reports the state of the SW terminal
// shellies/<model>-<deviceid>/temperature reports internal device temperature in °C
// 
// MQTT configuration.yaml contains this section:
// mqtt:
//   broker: 127.0.0.1
//   discovery: true
//   discovery_prefix: homeassistant
//
// Cheers from https://bitekmindenhol.blog.hu/

let CONFIG = {
  shelly_id: null,
  shelly_mac: null,
  shelly_fw_id: null,
  shelly_model: null,
  ha_mqtt_ad: "homeassistant",
  device_name: "VIRTUAL_SWITCH",
  payloads: {
    on: "on",
    off: "off"
  },
  update_period: 30000
};
;
Shelly.call(
  "Shelly.GetDeviceInfo",
  {},
  function (result) {
    CONFIG.shelly_id = result.id;
    CONFIG.shelly_mac = result.mac;
    CONFIG.shelly_fw_id = result.fw_id;
    CONFIG.device_name = result.name || result.id;
    CONFIG.shelly_model = result.model;
    initMQTT();
  }
)

function buildMQTTConfigTopic(hatype, devname) {
  return CONFIG.ha_mqtt_ad + "/" + hatype + "/" + CONFIG.shelly_id + "-" + devname + "/config";
}

function buildMQTTStateCmdTopics(hatype, topic) {
  let _t = topic || "";
  if (_t.length) {
    _t = "/" + _t
  }
  return "shellies/" + CONFIG.shelly_id + "/" + hatype + _t;
}

/**
 * @param {boolean} sw_state 
 */
function switchActivate(sw_state) {
  Shelly.call(
    "Switch.Set",
    {
      id: 0,
      on: sw_state
    }
  );
}

/**
 * @param {string} topic 
 * @param {string} message 
 */
function MQTTCmdListener(topic, message) {
  let _sw_state = message === "on" ? true : false;
  switchActivate(_sw_state);
}

Shelly.addStatusHandler(function (notification) {
  if (notification.component === "switch:0"){
   if (typeof notification.delta.output === "undefined") return;
   let _state_str = notification.delta.output ? "on" : "off";
   MQTT.publish(buildMQTTStateCmdTopics("relay/0"), _state_str);
  }
  if (notification.component === "input:0"){
   if (typeof notification.delta.state === "undefined") return;
   let _state_str = notification.delta.state ? "on" : "off";
   MQTT.publish(buildMQTTStateCmdTopics("input/0"), _state_str);
  }
});

function publishState() {
  Shelly.call("Switch.GetStatus", { id: 0 }, function (result) {
    let _temp = JSON.stringify(result.temperature.tC);
    MQTT.publish(buildMQTTStateCmdTopics("temperature"), _temp);
  });
};

/**
 * Activate periodic updates
 */
if(CONFIG.update_period > 0) Timer.set(CONFIG.update_period, true, publishState);

function initMQTT() {
  MQTT.subscribe(buildMQTTStateCmdTopics("relay/0", "command"), MQTTCmdListener);
  let _devname = "relay-0";
  MQTT.publish(
    buildMQTTConfigTopic("switch",_devname),
    JSON.stringify({
      name: CONFIG.device_name+"-"+_devname,
      "device": {
        "name": CONFIG.device_name+"-"+_devname,
        "ids": CONFIG.shelly_id+"-"+_devname,
        "mdl": CONFIG.shelly_model,
        "mf": "Allterco",
        "sw_version": CONFIG.shelly_fw_id
      },
      "unique_id": CONFIG.shelly_mac + "-"+ _devname,
      "pl_on": CONFIG.payloads.on,
      "pl_off": CONFIG.payloads.off,
      "cmd_t": "~/command",
      "stat_t": "~",
      "~": buildMQTTStateCmdTopics("relay/0")
    }),
    0,
    true
  );
  _devname = "input-0";
  MQTT.publish(
    buildMQTTConfigTopic("binary_sensor",_devname),
    JSON.stringify({
      name: CONFIG.device_name+"-"+_devname,
      "device": {
        "name": CONFIG.device_name+"-"+_devname,
        "ids": CONFIG.shelly_id+"-"+_devname,
        "mdl": CONFIG.shelly_model,
        "mf": "Allterco",
        "sw_version": CONFIG.shelly_fw_id
      },
      "unique_id": CONFIG.shelly_mac + "-"+ _devname,
      "pl_on": CONFIG.payloads.on,
      "pl_off": CONFIG.payloads.off,
      "stat_t": "~",
      "~": buildMQTTStateCmdTopics("input/0")
    }),
    0,
    true
  );  
  _devname = "temperature";
  MQTT.publish(
    buildMQTTConfigTopic("sensor",_devname),
    JSON.stringify({
      name: CONFIG.device_name+"-"+_devname,
      "device": {
        "name": CONFIG.device_name+"-"+_devname,
        "ids": CONFIG.shelly_id+"-"+_devname,
        "mdl": CONFIG.shelly_model,
        "mf": "Allterco",
        "sw_version": CONFIG.shelly_fw_id
      },
      "unique_id": CONFIG.shelly_mac + "-"+ _devname,
      "unit_of_measurement": "°C",
      "device_class": "temperature",
      "val_tpl":"",
      "stat_t": "~",
      "~": buildMQTTStateCmdTopics(_devname)
    }),
    0,
    true
  );    
}
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
audi68
Messages : 139
Inscription : 08 nov. 2020, 20:16

Re: Domoticz et shelly

Message par audi68 »

C’est bien le même script

Dans l’adresse du serveur sur le Shelly tu met ipdomoticz:1883 ou juste ipdomoticz?
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Domoticz et shelly

Message par Neutrino »

Juste l'IP du serveur MQTT.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
audi68
Messages : 139
Inscription : 08 nov. 2020, 20:16

Re: Domoticz et shelly

Message par audi68 »

Donc c’est juste

Capture du Shelly ci joint

Il faut installer un PlugIn mqtt auto?
Pièces jointes
Capture d’écran 2023-01-03 08145612.png
Capture d’écran 2023-01-03 08145612.png (34.78 Kio) Consulté 5439 fois
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Domoticz et shelly

Message par Neutrino »

"Generic status update over MQTT" est coché chez moi.
Regarde de nouveau sur mqtt explorer voir si tout ce petit monde parle.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
audi68
Messages : 139
Inscription : 08 nov. 2020, 20:16

Re: Domoticz et shelly

Message par audi68 »

J'avais essayé en le cochant et décochant ça n'a rien changer.

Je l'ai cocher et j'ai ressayer mon MQTT explorer communique bien avec le shelly
Pièces jointes
Capture d’écran 2023-01-03 21332112.png
Capture d’écran 2023-01-03 21332112.png (91.59 Kio) Consulté 5408 fois
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: Domoticz et shelly

Message par Neutrino »

Ton script sur le shelly ne semble pas fonctionner.
Avec, tu devrais avoir un topic shellies et un topic homeassistant
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
audi68
Messages : 139
Inscription : 08 nov. 2020, 20:16

Re: Domoticz et shelly

Message par audi68 »

comme ce-ci?

j'avais localhost dans domoticz et la j'ai mis l'adresse ip
Pièces jointes
Capture d’écran 2023-01-03 220012.png
Capture d’écran 2023-01-03 220012.png (65.76 Kio) Consulté 5400 fois
Répondre