telemetry
Quoi de neuf

Fhem

  • Forum Electricité - Domotique
  • Auteur du sujet Auteur du sujet jcoenen
  • Date de début Date de début
  • #541
Je viens de découvrir comment obtenir un graphique avec des données enregistrées sur plusieurs fichiers log (log avec une date dans le nom).

Dans le filelog mettre l'option createGluedFile à 1

Après le SVGPlot lit toutes les données.


Dans le graphe ci dessous, les Filelog de voltage sont avec l'option, les filelog de couranrt ne le sont pas, touts les Filelog sont définis de manière à enregistrer une journée (de minuit à minuit, une mesure par seconde).


2022-07-18-121459_1492x942_scrot.png
 
  • #542
FHEM évolue vite et bien. Il y a de plus en plus de features & de modules.

Je me demande bien combien il y a d'utilisateurs réels dans le monde.
 
  • #543
Elle est bonne la question, d'après moi beaucoup, mais comme ca fonctionne day in/day out, il n'y a pas besoin d'en faire tout un plat et d'en discuter à longeur de journée.

De plus les germains sont moins loquaces et font moins de bruit.
 
  • #544
Un mini-tuto pour créer un bouton dans l'interface FHEM ? J'aimerais faire un bouton "allumer telle lampe pour 1h" par exemple. Ce qui me chipote, c'est comment créer le bouton lui-même.

Merci !
 
  • #545
Slt @Lex,

dans la lampe elle meme,

definir l’attribut suivant:


webCmd on: off: on-for-timer 3600: on-until 18:00 (sans les espace apres les : sinon ca donne ceci sur bricozone :eek: emoji grrrr de grrr

dans la page web apparaitrons alors a cote du device l’icone, un bouton on, un bouton off, un bouton on pour 3600 secondes et on jusqu’a 18:00 (il faut mettre l’unicode sinon ca n’est pas reconnu.

c’est ca que tu cherches ?

par exemple:


webCmd on-for-timer 600

A66755EA-003D-4689-96F4-DA83FA725D66.jpeg

Si tu cliques sur la lampe c’est on/off, si tu cliques sur on for time 600 c’est on pour 10 minutes ( le temps que le café passe)
 
Dernière édition:
  • #546
Petit example de pilotage d'éclairage par détecteur de présence, détecteur de luminosité et paramétrisé.

Ce que je souhaite réaliser:

Utiliser mes détecteurs d'alarme (AnB) pour allumer des lampes (KNX) lorsque la luminosité est inférieure a un certain seuil dont je peux modifier la valeur, les lampes doivent rester allumées pendant un temps paramétrisable.

J'ai donc les devices suivants:

1) Un input numérique branché sur un relais (EXO 8) de l'alarme, l'alarme pilote le relais de l'exo par l'état du détecteur.

DEFINE KNX_0101202 KNX 1/1/202:dpt1.005
une fois activé je reçois une information alarme (transitoire) dans le state du KNX_0101202

2) Le circuit de la lampe, rien de spécial.
DEF KNX_0101170 1/1/170:dpt1

3) Une mesure de luminosité (par un détecteur de mouvement EIBMARKT avec un capteur de luminosité)

define KNX_0103005 1/3/5:dpt9.004
attr KNX_0103005 userReadings raw:getG1.* {ReadingsNum("KNX_0103005","getG1",0,2)}

4) Un dummy pour gérer la durée d'éclairement (avec un slider pour changer a volonté celle ci)

define duree_timer dummy
attr duree_timer room TEST,detecteurs
attr duree_timer setList state:slider,5,5,120,1
attr duree_timer webCmd state

5) Un dummy pour gérer le seuil de luminosité:

define seuil_luminosite dummy
attr seuil_luminosite room TEST,detecteurs
attr seuil_luminosite setList state:slider,0,0.1,30,1
attr seuil_luminosite userReadings raw {ReadingsNum("seuil_luminosite","state",0,2)}
attr seuil_luminosite webCmd state

6) Un DOIF pour manipuler tout ce petit monde

define KNX_0101202_DOIF_1 DOIF ([KNX_0101202:getG1] eq "alarm" and [KNX_0103005:raw] < [seuil_luminosite]) (set KNX_0101170 on-for-timer {(ReadingsVal("duree_timer","state",30))})

Explication:

Lorsque le device KNX_0101202 envoie une valeur sur G1 (groupe 1) et que celle-ci vaut alarme (donc détection), alors si la valeur du reading raw du KNX_0103005 est inférieure à la valeur du dummy seuil_luminosite on allume la lampe KNX_0101170 pour la durée spécifiée par le dummy duree_timer

Quelques astuces:

Le capteur de luminosité retourne un état avec unité (e.g. 10.93 lux), les unités doivent donc être éliminée de l'état pour être utilisé dans la condition 'plus petit que', je définit un userReadings "raw" avec la valeur {ReadingsNum("KNX_0103005","getG1",0,2)} cad la premiere valeur numérique présente dans le Reading getG1 du device KNX_0103005, par défaut 0 avec 2 décimales.

Pareil avec le dummy "luminosite", au cas où le Reading "state" ne serait pas complètement numérique.

Le pilotage de la lampe en manuel restant bien entendu fonctionnel.

Capture d’écran 2022-09-09 à 16.34.43.png


Les dummies sont directement contrôlable en glissant leur slider sur la page.
 
  • #547
Je pense que ça vient de mon setup: mon Pi a ses données stockées sur mon Syno, sur un iSCSi target.

Comme tu es joueur, peux-tu essayer ceci sur ton Pi3 ?

dd if=/dev/zero of=test.file bs=64M count=1 oflag=dsync

Il a mis 7.69s chez moi (contre 1.25s en direct sur mon Syno).

Juste pour voir, ça vient peut-être de là...
Bon, je viens de changer de Syno (mais c'est pas le sujet :rolleyes:)

Re-test ce genre de truc:

En direct sur le nouveau Syno: 0.47s (contre 1.25s avec l'ancien Syno)

Depuis le Pi3 connecté en iSCSI sur le nouveau Syno: 3.21s (contre 7.69s avec le Pi2 sur l'ancien Syno)

C'est bien sûr plus lent qu'avec un SSD en direct sur le Pi, mais j'aime bien le iSCSI...
 
  • #548
Bon, je viens de changer de Syno (mais c'est pas le sujet :rolleyes:)

Re-test ce genre de truc:

En direct sur le nouveau Syno: 0.47s (contre 1.25s avec l'ancien Syno)

Depuis le Pi3 connecté en iSCSI sur le nouveau Syno: 3.21s (contre 7.69s avec le Pi2 sur l'ancien Syno)

C'est bien sûr plus lent qu'avec un SSD en direct sur le Pi, mais j'aime bien le iSCSI...

Tant que tu ne fais pas des graphique sur des mesures toutes les secondes c'est tout a fait raisonnable avec l'avantage du iSCSI.

Pour comparer avec un Rpi 4 sur SSD (via USB3) cela donne

pi@raspdomo:~ $ dd if=/dev/zero of=test.file bs=64M count=1 oflag=dsync
67108864 octets (67 MB, 64 MiB) copiés, 0,688826 s, 97,4 MB/s

Sur un raspberry 400 avec un "SSD" Sandisk de 480 GB USB3 j'ai

67108864 octets (67 MB, 64 MiB) copiés, 2,59416 s, 25,9 MB/s

Donc faire très attention SSD ne veut pas nécessairement dire très beaucoup rapide.


Donc le vainqueur est le syno en direct !
 
Dernière édition:
  • #549
En ce qui concerne le module officiel et bien il faut en cas de bidouille, remodifier celui s'il est mis a jour.

Une autre solution étant de demander au propriétaire du module d'intégrer les modifications (quitte a ajouter le type de DSMR pour configurer le module car il utilise le DSMR 4).
Il existe un attribut de global qui permet d'exclure des modules de l'update:

attr global exclude_from_update nomdumodule.pm
 
  • #550
Et ça donne même l'info pendant un update check:

upload_2022-9-27_0-55-42.png


upload_2022-9-27_0-55-9.png
 
  • #552
TUYA, en bicolant pour un copain, j'ai acheté des modules tuya ZigBee, et par curiosité j'ai acheté une commande de vanne WiFi

Sur FHEM les appareils zigbee sont en général bien reconnu via deConz (et phoscon), pour les tuya WiFi j'ai trouvé fhempy, ou des modules python peuvent être rajoutés à fhem (automatiquement car je n'ai rien du faire). Une fois installé et les appareils définit via l'app tuya smart, plus besoin de connecter l'appareil à internet il est piloté directement par FHEM en local. Un petit capteur d'humidité rajouté et j'ai un système de remplissage automatique.

J'ai essayé d'obtenir la même chose avec homeassistant, mais le module tuya doit se connecter aux serveurs tuya et donc l'appareil doit être connecté à Internet (ce dont je n'ai nulle envie). Il doit certainement y avoir un module ad hoc, mais vu que fhem fonctionne, je n'ai pas poussé plus loin la recherche.
 
  • #553
Oulàà... je ne savais même pas que ce genre de vanne existait, surtout pour le prix !

La vanne, elle est en Zigbee vers un récepteur Zigbee sur ton Pi FHEM ? C'est ça le principe ?
 
  • #554
Elle existe en zigbee où en wifi, la vanne devait être dans la cave ou j’ai le wifi mais pas le zigbee, j’ai donc opté pour le wifi. Le but c’est de piloter le remplissage de la piscine avec une capteur d’humidité (Zigbee ou Wifi) dans le débordement, quand l’eau arrive aux fils du capteur la vanne est mise sur off et vice versa.

Ça marche avec mes doigts mouillés.

Il y deux vis sur le capteur sur lesquels on peut mettre un câble dénudé à l’autre bout pour détecter la flotte …
 
Dernière édition:
  • #555
En fait le système est fait pour couper la vanne quand on détecte une fuite, mais en inversant la logique on peut remplir un réservoir ou une piscine.
 
  • #556
Après avoir replié les éclairages de Noël, je me suis remis sur la question de piloter une lampe RGB (Eglo Zigbee du bricolage) pour avoir une indication de la température extérieure via la couleur de la lampe.
J'ai assez procrastiné avec home assistant (forum etc), mais il y avait beaucoup de bazar a mettre en route.

Donc j'ai jeté un oeil rapide. sur FHEM et là:

il faut juste définir le notify suivant:

define Color_temp notify TX3:temperature.* {fhem("set HUEDevice28 rgb ".substr(Color:: pahColor(0,15,30,$EVTPART1,0,0),0,6))}

TX3:temperature.* est la mesure au capteur de température
et
HUEDevice28 la lampe HUE RGB.

NB: il faut avoir le module Color.pm, mais il doit être installé par défaut et que fhem?detail=colorInit soit bien initialisé
(define colorInit notify global:INITIALIZED {use Color}


Après la couleur variera en fonction de la température mesurée au capteur.
A chaque mise à jour de la température par le capteur le notify va changer la couleur de la lampe.

Source: FHEM Wiki
 
Dernière édition:
  • #557
ORES a relevé mon compteur communicant.

J'aimerais bien calculer dans FHEM ce que j'ai consommé depuis ce relevé.

J'ai créé un CustomReadings qui comporte les index des mes compteurs au moment du relevé (entrés manuellement)
upload_2023-1-14_12-7-7.png


Je ne vois pas comment faire le bête calcul:

consommation depuis relevé pour P JOUR: index actuel du compteur P_Jour - variable P_Jour du customreading

C'est sûrement tout bête, mais je ne vois pas comment faire.

Merci !
 
  • #558
Héla coucou, merci pour le CustomReadings, je ne connaissais pas ... je me suis arrêté au dummy.

Bon alors j'ai défini un dummy pour les relevés, car le CustomReadings s'il permet d'entrer des valeurs fixe, après il faut éditer l'attribut readingDefinitions pour les modifier, alors que le dummy permet de faire un set.

Donc

je défini un dummy pour entrer les relevés (et une date, on ne sais jamais)

define releve dummy
attr releve readingList jour nuit date
attr releve room Power


ensuite j'entre les relevés

set releve jour 4123
set releve nuit 2987
set releve date 14-01-2023

Capture d’écran 2023-01-14 à 14.14.22.png


ensuite je défini le customreadings "conso", celui-ci va aller extraire les readings des relevés du Device "releve" et le mettre dans le Reading <relevenuit> (pour affichage seulement) via relevenuit:{ReadingsVal("releve","nuit",0)}
pareil avec le releve de jour.

Lecture des consommation actuelles (lue sur le Device resa, smartmeterP1), a adapter suivant ton installation.

ConsoJour:{ReadingsVal("resa","ElectricityDeliveredNormalTariff",0)}
ConsoNuit:{ReadingsVal ("resa","ElectricityDeliveredLowTariff",0)}

Calcul des différences

DifferenceNuit:{ReadingsVal ("resa","ElectricityDeliveredLowTariff",0)-ReadingsVal("releve","nuit",0)}
DifferenceJour:{ReadingsVal ("resa","ElectricityDeliveredNormalTariff",0)-ReadingsVal("releve","jour",0)}

Et le state format qui donne les valeurs des différences sur les pages

soit

define conso CustomReadings

attr conso readingDefinitions relevenuit:{ReadingsVal("releve","nuit",0)},relevejour:{ReadingsVal("releve","jour",0)},ConsoJour:{ReadingsVal("resa","ElectricityDeliveredNormalTariff",0)},ConsoNuit:{ReadingsVal ("resa","ElectricityDeliveredLowTariff",0)},DifferenceNuit:{ReadingsVal ("resa","ElectricityDeliveredLowTariff",0)-ReadingsVal("releve","nuit",0)},DifferenceJour:{ReadingsVal ("resa","ElectricityDeliveredNormalTariff",0)-ReadingsVal("releve","jour",0)}

attr conso room Power

attr conso
stateFormat DifferenceJour KWh DifferenceNuit KWh

Ce qui me donne au final (il faut faire un set update sur conso pour activer les Reading).
On peut rafraichir les lectures toute les X secondes (set conso attr interval X), par défaut l'intervalle semble être de 5 secondes.

Capture d’écran 2023-01-14 à 14.57.29.png


Et voici mon Device resa qui est connecté au smartmeter port P1

Capture d’écran 2023-01-14 à 14.26.14.png
 
Dernière édition:
  • #559
Je pense que la lecture doit être inversée dans le module smartmeterP1, Nuit = Normal et Low = Jour ...
 
  • #560
Un nouveau module vient d'apparaître: AutomowerConnect

Pour gérer le robot tondeuse.

Je ne l'ai pas encore essayé, on verra en mars.
 

Sujet semblables

Réponses
5
Affichages
3K
@lex
Réponses
21
Affichages
3K
RobBZ
Réponses
2K
Affichages
208K
jcoenen
Réponses
3
Affichages
7K
pidgin

Nos articles

On a aimé dans le forum

Retour
Haut