Domoticz, Zigbee, Sonoff, Tasmota, Raspberry Pi…

Ca fait un bail que je suis resté silencieux à propos de mon installation Domoticz (voir ici)

Pour rappel mon Domoticz tourne sur un Raspberry Pi 3B+ équipé d’un adaptateur PiZiGate, et mes périphériques sont: IPX-800, divers Sonoff, et des bidules Zigbee.

Entre-temps j’ai acheté un petit SSD (32€) et un adaptateur USB2-SATA (7€). En effet je n’ai pas envie d’attendre que la carte micro-SD de 8GB me claque entre les mains en raison de sa lente et inévitable usure.

J’ai installé un détecteur de fumée Zigbee, la transmission d’alerte par Telegram fonctionne.

Le dernier Sonoff Basic R2 que j’ai acheté n’a pas voulu fonctionner avec ESPeasy. Du coup j’ai essayé Tasmota et je l’ai adopté.

Enfin nous avons commandé des stores, et j’ai demandé une livraison avec moteur classique commandé par fil (et non avec une télécommande propriétaire Somfy). En attendant la livraison et l’installation, j’ai déjà préparé la commande à distance.

Pour chacun il y aura un relais Wifi à 2 canaux avec relais inverseurs à contact sec, avec la ferme intention de les flasher avec Tasmota comme j’ai fait précédemment avec les derniers Sonoff. Et surprise, alors que la photo montrait clairement les petits trous dans le circuit imprimé pour y brancher un câble série, le modèle que j’ai reçu en fait défaut !

Déception ! Du coup je me suis intéressé à piloter Domoticz > IFTTT > eWelink > relais et j’y suis arrivé avec un certain succès. Sauf que… eWelink est payant si on veut l’interfacer, statut VIP 10$/an ; et IFTTT est devenu payant si on veut avoir plus que 3 scripts, statut Pro 2$/mois !

Tout ça pour avoir un relais qui s’actionne avec 5 secondes de retard, voire plus, et être à la merci d’une défaillance de l’accès internet, de IFTTT, et/ou de eWelink. Payer et devoir dépendre des autres, non merci ! C’est l’occasion de rappeler tout le mal que je pensais de l’application eWelink qui demande de se foutre (virtuellement) à poil devant son appareil.

Après d’intéressantes lectures sur internet, notamment de data sheets du PSF-B04 en chinois (identification du chip en montage surélevé), je sors mon fer à souder équipé de sa panne la plus fine, pour souder 4 fils dont deux sur des pattes de circuit de 1 mm de large. Ceci me donne accès à GND (zéro volt), Vcc (+3.3) et les classiques TX et RX. Et hop, ça y est Tasmota est flashé dans l’appareil !

 

Je déclare cet appareil comme un Sonoff 4CH Pro même s’il n’a que 2 sorties.

Au niveau du câblage qui est prévu pour le store électrique, le relais 1 amène le courant ou le coupe, et le relais 2 est utilisé comme inverseur pour activer un moteur ou l’autre. Il est donc impossible de commander à la fois la montée et la descente, et il ne faut pas dépendre d’une fonction “interlock” du relais.

A ce stade, on peut commander les relais au moyen de la télécommande RF433 qui est livrée avec (si on a choisi ce modèle bien sûr), ou bien avec les boutons sur l’appareil, ou bien à partir de la page Web Tasmota à l’adresse IP où il se trouve. C’est peu convivial et uniquement une solution de secours.

On va lui ouvrir l’horizon. Dans Domoticz, on déclare 2 switches on/off virtuels à partir de Setup > Hardware > Virtual Sensors, et pour ces 2 switches, on leur donne un nom à chacun et la commande HTTP qui actionne le switch (ou MQTT pour ceux qui l’ont implémenté).

 

On peut maintenant créer une ou plusieurs scènes où on va actionner ces switches pour en faire ce que l’on veut.

J’ai commandé des boutons Zigbee (ici ou ici ou autre modèle ici)

et la petite notice en chinois bien sûr, ici la page qui montre comment l’ouvrir pour changer la pile

Appairage:

Ces boutons différencient le simple clic et le double-clic. Celui-ci supporte aussi le triple et quadruple-clic, tandis que d’autres modèles reconnaissent un appui long. Je vais utiliser le simple-clic pour actionner le store (en inversant le sens) et le double-clic pour un arrêt immédiat. J’ai essayé avec des scènes et des scripts Blockly sans y arriver. Finalement un script dzVents de quelques lignes fait le travail à merveille

return {

   on = { devices = { 94 }},        -- idx of button

   execute = function(dz, item )
           dz.log("state of " .. item.name .. " is " .. item.state)
           if item.state == "1 Click" then
            dz.devices(73).toggleSwitch()    -- idx of up/down switch
            dz.devices(72).switchOn()      -- idx of power switch
        elseif item.state == "2 Click" then
            dz.devices(72).switchOff()    -- idx of power switch
        end
   end
}

Un mot d’explication:

Si le bouton idx=94 est activé, le script est exécuté. Si l’état est “1 Click” alors on inverse le switch2 (idx=73) pour monter/descendre et on allume le switch1 (idx=72) qui donne l’alimentation électrique. Lors de l’action “2 Click” (arrêt du store) le switch 1 est éteint.

En outre un timer de 17 secondes avait été mis sur le switch1, à régler quelques secondes de plus que l’ouverture ou la fermeture complète, ainsi on ne laisse jamais le store sous tension en permanence.

A remarquer que l’utilisation directe des boutons sur les relais, ou des télécommandes RF433 n’informent pas Domoticz de cette action. Une commande MQTT telle que ‘domoticz/in’ avec un payload ‘{ “idx” : 72, “nvalue” : 0}’ permet de changer l’état dans Domoticz sans que Domoticz n’envoie en écho (et possiblement en boucle infinie) un ordre d’extinction au relais. Il n’y a plus qu’à trouver comment demander à Tasmota de le faire.

Je considère cela d’une importance secondaire car les relais et leur câblege périphérique seront planqués dans des élégants petits boîtiers. C’est juste une seolution de secours.

This entry was posted in Bricolage, Informations générales, Internet niouzes, Serveurs, Utilitaires. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *