Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Toute la communauté vous remercie

[Plugin Tiers][Sujet Principal] ArduiDom

Pour échanger sur les plugins classés en catégorie "Protocoles domotiques"
Avatar de l’utilisateur
rhcpdu13
Timide
Messages : 241
Inscription : 08 déc. 2014, 16:14
Localisation : Gardanne
Contact :

Re: Plugin ArduiDom

Message par rhcpdu13 » 28 mai 2015, 17:17

Salut aloïs et les autres :)

J'ai un petit soucis non bloquant avec mon arduino + LCD shield.

J'ai de temps en temps un message d'erreur qui s'affiche :

Code : Tout sélectionner

Erreur: Réponse du démon ArduiDom = " . $resp . " - Réponse attendue =" . $_tcpmsg . "_OK"
J'ai un peu regardé dans les logs et a priori ça provient des boutons LCD... mais je ne comprends pas pourquoi. Et en fait ce n'est pas pénalisant puisque les boutons fonctionnent bien.

Extrait du log :

Code : Tout sélectionner

28-05-2015 14:12:03 | debug | sendtoArduino(SP2200000021.8) called
28-05-2015 14:12:03 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:12:33 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:13:03 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:13:04 | debug | setPinValue(22,21.8) called
28-05-2015 14:13:04 | debug |    $config=custout
28-05-2015 14:13:04 | debug | sendtoArduino(SP2200000021.8) called
28-05-2015 14:13:06 | error | Erreur: Réponse du démon ArduiDom = " . $resp . "    -    Réponse attendue =" . $_tcpmsg . "_OK"
28-05-2015 14:13:33 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:14:04 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:14:07 | debug | setPinValue(22,21.8) called
28-05-2015 14:14:07 | debug |    $config=custout
28-05-2015 14:14:07 | debug | sendtoArduino(SP2200000021.8) called
28-05-2015 14:14:33 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:15:03 | debug | setPinValue(22,21.8) called
28-05-2015 14:15:03 | debug |    $config=custout
28-05-2015 14:15:03 | debug | sendtoArduino(SP2200000021.8) called
28-05-2015 14:15:04 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:15:33 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:16:04 | debug | Mise à jour de la pin 14 a 1023
28-05-2015 14:16:04 | debug | setPinValue(22,21.8) called
28-05-2015 14:16:04 | debug |    $config=custout
Auriez vous une piste? :)
Utilisateur chevronné :p
  • - Raspberry 2 + jeedom |v3.2.6 + v1.3.1 sur Galaxy s8+
    - Z-Wave+ | Rfxcom | Blink(1) | Quirky Nimbus | ssd

Pour connaitre tout mes modules : https://www.jeedom.fr/forum/viewtopic.p ... 016#p74806

Avatar de l’utilisateur
chevalir
Timide
Messages : 140
Inscription : 04 juin 2015, 20:39
Localisation : Ain
Contact :

Re: Plugin ArduiDom

Message par chevalir » 04 juin 2015, 23:03

Je suis dans le code de ce plugin de puis une semaine :: et tout d'abord Bravo

Aujoud'hui Je pilote tout mes récepteurs DIO et le hack à base d'arduino que j'ai fais sur un ancien model de télécommande Velux.
J'ai également légérement modifier le code sketch arduino de se plugin pour permettre la réception de de valeur de température envoyer par des sondes maisons. J'ai légèrement modifier le protocole DIO pour permettre l'envoi de valeurs numérique. Les sondes sont réalisé à base atmega368P sonde dallas et émetteur RF, du standard donc quoi ). je remonte les valeurs reçu en RF via les customs ...

Mais avant de réussir à piloter mes récepteurs j'ai été obligé de modifier le code de l'arduino du plugins. C'est en fait l'objet de ce post.
Je ne sais pas si quelqu'un d'autre à le problème mais chez moi l'émission ne marchait qu'avec certains codes de télécommande et pas avec d'autres.
Comme j'avais mon propre code sur le RPI pour faire la même chose basé sur les autos idleman, j'ai cherché ce qui ne marchait pas avec l'arduidom.

Je me suis intéressé à la ligne :

Code : Tout sélectionner

ChaconSender += 100000 * int(DataSerie[8] - '0' / 10); // Bien que cette ligne soit "bizarre" c'est NORMAL et VOULU (Merci alois pour l'astuce)
Que j'ai modifier pour la remettre comme les autres mais cela n'a pas réglé complètement le problème, certain identifiants de télécommande ne marchaient toujours pas.

J'ai donc décidé de re codé cette partie qui me paraissait un peu compliqué pour transformé une string en long:
j'ai donc remplacé ce code :

Code : Tout sélectionner

ChaconSender = 10000000 * int(DataSerie[5] - '0');
					ChaconSender += 1000000 * int(DataSerie[6] - '0');
					ChaconSender += 100000 * int(DataSerie[7] - '0');
					ChaconSender += 100000 * int(DataSerie[8] - '0' / 10); // Bien que cette ligne soit "bizarre" c'est NORMAL et VOULU (Merci alois pour l'astuce)
					ChaconSender += 1000 * int(DataSerie[9] - '0');
					ChaconSender += 100 * int(DataSerie[10] - '0');
					ChaconSender += 10 * int(DataSerie[11] - '0');
					ChaconSender += 1 * int(DataSerie[12] - '0');
					int ChaconRecevr = 10 * int(DataSerie[15] - '0') + int(DataSerie[16] - '0');
					
					if (DataSerie[14] == '0') {
						for (int i = 1; i <= RADIO_REPEATS; i++) {
							mySwitch.send(ChaconSender,ChaconRecevr,false);
						}
					} else {
						for (int i = 1; i <= RADIO_REPEATS; i++) {
							mySwitch.send(ChaconSender,ChaconRecevr,true);
						}
					}
Par celui-ci :

Code : Tout sélectionner

                                        DataSerie[13] = 0; // group char is not used so set 0 to limite the strtol function  
					bool onOff = DataSerie[14] == '1';
					ChaconSender = strtol( &DataSerie[5], NULL, 0 )
					int ChaconRecevr = 10 * int(DataSerie[15] - '0') + int(DataSerie[16] - '0');
					for (int i = 1; i <= RADIO_REPEATS; i++) {
						mySwitch.send(ChaconSender, ChaconRecevr, onOff);
					}

depuis tous les identifiants de mes 5 télécommandes et 10 interrupteurs simples ou doubles DIO sont parfaitement gérés par l'arduidom en émission et réception.

La prochaine étape pour moi sera de connecter sur arduidom mes 6 sondes thermiques dallas qui sont pour le moment connectées en direct sur le PI.
je vais aussi regarder la partie démarrage qui chez moi ne marche pas toujours bien ... perte du port série ...

Hope to help,

Bravo encore pour ce plugin vraiment génial.
chevalir

Avatar de l’utilisateur
Aloïs
Timide
Messages : 425
Inscription : 02 août 2014, 13:44

Re: Plugin ArduiDom

Message par Aloïs » 05 juin 2015, 04:29

Super !!!! Merci pour ce bout de code !! Port le port série tente de le fixer, quelques page avant on en parlait.
Cuisine connectée : Porte Cachée

Avatar de l’utilisateur
chevalir
Timide
Messages : 140
Inscription : 04 juin 2015, 20:39
Localisation : Ain
Contact :

Re: Plugin ArduiDom

Message par chevalir » 06 juin 2015, 17:19

bln35 a écrit :Je refais un copier/collé de mes traces, car dans mon précédent message on voit que des valeurs 0 ce qui n'est pas le cas

2015-05-12 08:49:06 | debug | [93mJeeDom >> [PING][0m
2015-05-12 08:49:06 | debug | PING Received !
2015-05-12 08:49:06 | debug | [94m[PING] >> Arduino[0m
2015-05-12 08:49:06 | debug | Wait Arduino Response...
2015-05-12 08:49:06 | debug | [92mArduino >> [DBG_Data to do:PING][0m
2015-05-12 08:49:06 | debug | [92mArduino >> [PING_OK][0m
2015-05-12 08:49:06 | debug | Arduino >> [PING_OK]
2015-05-12 08:49:06 | debug | [PING_OK] >> JeeDom
2015-05-12 08:49:23 | debug | [92mArduino >> [DATA:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
18.25,18.75,16.87,18.62,17.25,18.62,23.56,19.00,13.31,19.12,17.56,0.00,0.00,0.00,82.60,1022.00][0m
Est-ce qu'il y a une solution ? j'ai exactement le même problème. Apres un reboot Jeedom redémarre, le plugins démarre et lance le deamon, la com avec l'arduino est OK (on voit les traces ) par contre le plugins indique que le deamon n'est pas démmaré du coup le deamon n'envoi rien au plugins. Il suffit de faire un redémarrage du deamon via le plugins pour que tout soit OK.
De ce que j'ai vu dans arduidom.class.php le timeout est de 4s (même si le commentaire indique qu'il est de 10s ) , mais pas expert en PHP donc peut-être que ce timeout n'a rien à voir ... je vais faire des tests, sauf si vous avez déjà trouvez une solution.
merci d'avance,
Roland
chevalir

Avatar de l’utilisateur
chevalir
Timide
Messages : 140
Inscription : 04 juin 2015, 20:39
Localisation : Ain
Contact :

Re: Plugin ArduiDom

Message par chevalir » 14 juin 2015, 08:41

J'ai réglé mon problème en installant l'IDE Arduino sur le raspberry. Je ne l'avais pas fait car je ne développe pas sur le RPI mais sur iMac. Je pense que l'install de l'IDE à maj les lib de com serial USB. Comme je ne peux pas vraiment revenir en arriére pour vérifier .. je vous donne l'info brute !!!
chevalir

Avatar de l’utilisateur
Zerat9w
Timide
Messages : 483
Inscription : 26 févr. 2015, 09:26
Localisation : Région Bordelaise

Re: Plugin ArduiDom

Message par Zerat9w » 16 juin 2015, 23:43

Bonsoir,

Savez vous si le plugin fonctionne avec les sondes Oregon ?

Pourriez-vous me confirmer que le plugin fonctionne bien avec les prises Chacon 54795 ?

Merci par avance.

Envoyé de mon OnePlus One en utilisant Tapatalk
Jeedom

La rétention de l'information est une forme de constipation du savoir.

Documentation - Trucs & Astuces - Charte

sebbbl
Timide
Messages : 83
Inscription : 01 janv. 2015, 16:40

Re: Plugin ArduiDom

Message par sebbbl » 22 juin 2015, 08:02

Salut à tous,

Je débute avec l'arduino et j'ai voulu tester le plugin. Niveau config, tout se passe bien. J'ai branché sur A0 un capteur de température TMP36. J'active l'équipement, celui-ci me renvoie une valeur actualisée toutes les secondes pendant une minute, puis le Pi (un B+) ne répond plus, obligé de le débrancher/rebrancher pour le rebooter vu qu'il ne répond même plus en ssh.
Comment régler une fréquence de requête plus lente, histoire de soulager le Pi ?
Secundo, où se font les écritures de log du démon ? Est-ce néfaste pour la carte mémoire ?

Merci pour vos réponses !

thprl
Timide
Messages : 18
Inscription : 23 juin 2015, 19:56
Localisation : Tarn

Re: Plugin ArduiDom

Message par thprl » 23 juin 2015, 20:11

Bonjour à tous,
n'ayant pas trouvé d'exemple pour me guider, je vous soumets mon projet : réaliser un va et vient sur Arduidom

La configuration :
un inter sur port 5, un autre sur le port 6 (et peut être d'autres par la suite)
un relais sur le port 9
l'idée est qu'un changement sur un des inter (ce ne sont pas de poussoir)
change l'état du relais (de on à off ou de off à on)

Les questions que je me pose en vrac : comment récupérer l'état du relais, faut il un scénario, un virtuel ... ?

Merci de vos conseils
Dernière édition par thprl le 26 juin 2015, 18:14, édité 1 fois.

Avatar de l’utilisateur
chevalir
Timide
Messages : 140
Inscription : 04 juin 2015, 20:39
Localisation : Ain
Contact :

Re: Plugin ArduiDom

Message par chevalir » 25 juin 2015, 19:37

bln35 a écrit :J'ai comparé les traces lorsque me valeurs customs sont prisent en compte ou pas.
Lorsque ça fonctionne correctement, j'ai le type de trace ci dessous (après chaque requete type [92mArduino, il y a des requete type 91mPHP)

[92mArduino >>[DATA:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
18.94,18.94,18.75,19.12,18.87,18.75,24.87,18.94,14.63,19.56,17.62,0.00,0.00,0.00,63.20,1022.00][0m
2015-05-12 11:03:09 | debug | [91mPHP=> 0=0 1=0 2=0 3=0 4=0 5=0 6=0 7=0 8=0 9=0 10=0 11=0 12=0 13=0 14=0 15=0 16=0 17=0 18=0 19=0 20=0 21=0 22=0 23=0 24=1 25=0 26=1 27=0 28=0 29=0 30=0 31=0 32=0 33=0 34=0 35=0 36=0 37=0 38=0 39=0 40=0 41=0 42=0 43=0 44=0 45=0 46=0 47=0 48=0 49=0 50=0 51=0 52=0 53=0 54=0 55=0 56=0 57=0 58=0 59=0 60=0 61=0 62=0 63=0 64=0 65=0 66=0 67=0 68=0 69=0 70=18.94 71=18.94 72=18.75 73=19.12 74=18.87 75=18.75 76=24.87 77=18.94 78=14.63 79=19.56 80=17.62 81=0.00 82=0.00 83=0.00 84=63.20 85=1022.00 [0m
2015-05-12 11:03:09 | debug | [92mArduino >> [70>>18.94<<][0m
2015-05-12 11:03:09 | debug | [91mPHP=> 70=18.94 [0m
2015-05-12 11:03:09 | debug | [92mArduino >> [71>>18.94<<][0m
2015-05-12 11:03:09 | debug | [91mPHP=> 71=18.94 [0m

Par contre, après un reboot de Jeedom, et la non prise en compte de mes valeurs Customs, j'ai des requetes type [92mArduino, mais aucune requete type 91mPHP. Cela explique probablement mon problème.

@Alois, quel fichier/script est chargé de répondre par des requêtes du type 91mPHP ? Pour rappel, pour que ça fonctionne à nouveau je dois stopper le Daemon (car il est vu en service) puis le réactiver pour que mes valeurs customs soient prise à nouveau en compte. Comment puis je faire ces opérations (Stop & start) à la mano en SSH pour solutionner mon problème ?
De votre coté avez vous constatez le même problème ou est ce que cela fonctionne correctement après reboot de Jeedom ?
Merci d'avance pour votre support



Bon après une petite interruption dans mes recherches et comme je n’ai pas vu de réponse sur le forum j’ai repris les tests hier et je pense connaitre la cause et avoir une solution au problème.
Voilà ce que j’ai trouvé.

D’abord les symptômes :
Apres un redémarrage du Deamon ou un reboot du système
1 dans Jeedom le plug-ins indique que le « Deamon n’a pas démarré » ou que le « Deamon ne fonctionnement pas ».
2 Si l’on regarde les logs du Deamon on trouve qqc qui ressemble à ce que bln35 a posté.
3 L’envoi de commande depuis Jeedom vers Arduino MARCHE
4 La remonté d’info de l’Arduino vers Jeedom ne MARCHE PAS.

Pour ceux qui ont le problème et pas le courage de tout lire ;) voila la solution. Dans le Sketch de l’Arduino il faut ajouter une ligne comme ceci :

version d'origine

Code : Tout sélectionner

		
if (DataSerie[0] == 'P' && DataSerie[1] == 'I' && DataSerie[2] == 'N' && DataSerie[3] == 'G') { // ***************************** PING
			Serial.println("PING_OK");
		}
à remplace par

Code : Tout sélectionner

		if (DataSerie[0] == 'P' && DataSerie[1] == 'I' && DataSerie[2] == 'N' && DataSerie[3] == 'G') { // ***************************** PING
			Serial.println("PING_OK");
			  Serial.println("CP_OK"); // @@RC Fix plugins init bug
		}

Pour ceux qui veulent l’explication la voila :


Le problème est lié à la phase d’initialisation entre les trois softs, Plugins, Deamon et Arduino ce qui est normal ayant un peu d’expérience sur la communication entre systèmes je peux dire que les phases d’init entre deux systèmes communicant est toujours très difficile, ici il y a trois systèmes donc c’est pire.
Bref ou est le problème :?: Et bien il est dans les trois systèmes car de ce que j’ai trouvé dans le code de cette init, si il y a le moindre décalage dans les réponses d’un des système tout est coincé.
Le plugins démarre le Daemon puis le Deamon ping l’Arduino et remonte le résultat du ping vers le plugins. Si le plugins à la bonne réponse dans les temps il envoi un ordre de configuration des Pin au Deamon qui l’envoi à l’Arduino, si l’Arduino renvoi configuration ok = CP_OK alors le Deamon est complètement et correctement initialisé.

Coté plugins tout est dans la méthode arduidom::startdaemon() de arduidom.class.php. Si tout va bien (pas d’erreurs) cette méthode lance self::setPinMapping() et c’est tout bon. Le problème coté Deamon est que les envois vers Jeedom sont conditionnés par l’état du booléen Arduino_CPOK et que ce booléen est « false » tant que Deamon n’a pas reçu au moins un « CP_OK ». L’Arduino envoi un CP_OK que si le Deamon lui envoi une commande CPzz….. si vous avez suivie cette commande est envoyé par le Plugins via la méthode self::setPinMapping(). Donc si pas de self::setPinMapping() pas de CP_OK pas de Arduino_CPOK = true donc pas de remontée d’info vers Jeedom.
Mais pourquoi est-ce que le Plugins détecte des erreur dans startdaemon() et bien je ne sait pas vraiment, il y a semble-t-il plusieurs causes, les messages ce croisent, l’Arduino ne répond pas assez vite, le Deamon n’est pas complètement près, bref je n’ai pas toujours la même comportement mais souvent le même résultat.
Il faudrait à mon avis revoir la phase d’init complètement pour éliminer les dépendances entre système, mais c’est une autre histoire. Pour le moment je me suis contenté d’intervenir sur la partie qui est customisable c’est à dire le Sketch de l’Arduino.

J’ai simplement ajouté l’envoi d’un CP_OK en réponse d’une demande de PING pour forcer le Daemon :twisted: à passer Arduino_CPOK à 1. Et voila tout va bien .

Code : Tout sélectionner

		if (DataSerie[0] == 'P' && DataSerie[1] == 'I' && DataSerie[2] == 'N' && DataSerie[3] == 'G') { // ***************************** PING
			Serial.println("PING_OK");
			// @@RC
			if ( CPConfDone ) {
			  Serial.println("CP_OK");
			}
			// end @@RC
		}
J’ai défini un booléen CPConfDone qui est false si l’Arduino n’a jamais reçu de configuration des pin, ce n’est pas indispenssable mais si vous voulez faire la même chose il faux créer la variable comme ceci :

Code : Tout sélectionner

// PARTIE DEFINITION
// Vos #define et autre ici
bool CPConfDone = true;
C’est la fonction InitEEPROM qui passe cette variable à false si besoin. Il faux donc modifier le méthode InitEEPROM comme ceci

Code : Tout sélectionner

    void InitEEPROM() {
    	EEPROM.write(1, ArduiDomVersion); // Pin Mode
    	for (int i = 2; i < 200; i++) {
    		EEPROM.write(i, 'z'); // Pin 0 Mode // RESERVED FOR USB
    	}
    	
    	// @@RC fix bug in plugins
    	CPConfDone=false;
    	// end @@RC
    	
    } // END OF InitEEPROM() 
Encore une fois vous pouvez faire simple et uniquement ajouter Serial.println("CP_OK"); après le Serial.println("PING_OK");

Résultat à chaque PING l’Arduino envoi un CP_OK au Deamon qui set Arduino_CPOK à 1 et autorise les remontées d’info vers Jeedom.

Je peux revoir un peu la méthode d'init du plugin si cela peu aider l'équipe Arduidom.
Dernière édition par chevalir le 04 août 2015, 20:44, édité 1 fois.
chevalir

Avatar de l’utilisateur
chevalir
Timide
Messages : 140
Inscription : 04 juin 2015, 20:39
Localisation : Ain
Contact :

Re: Plugin ArduiDom

Message par chevalir » 27 juin 2015, 07:00

Zerat9w a écrit :Bonsoir,

Savez vous si le plugin fonctionne avec les sondes Oregon ?

Pourriez-vous me confirmer que le plugin fonctionne bien avec les prises Chacon 54795 ?

Merci par avance.

Envoyé de mon OnePlus One en utilisant Tapatalk

Pour les prises Chacon 54795 et globalement tout ce qui D-IO je n'ai aucun problème. Je n'ai pas de sonde Oregon ... je vois rien qui indique que le protocole Oregon soit supporté :? ... mai je vois rien qui empêcherai de l'ajouté :) ....
Si tu as des probléme d'émission vers les prise Chacon, je te conseil le patch que j'ai posté le 04 Juin 2015. Cela dépend du code de ta télécommande, certaines marchent sans mon patch. J'ai 5 ou 6 télécommandes et environ 20 inter simples ou doubles, seuls qqu fonctionnent sans mon patch.
chevalir

Avatar de l’utilisateur
Zerat9w
Timide
Messages : 483
Inscription : 26 févr. 2015, 09:26
Localisation : Région Bordelaise

Re: Plugin ArduiDom

Message par Zerat9w » 30 juin 2015, 10:09

Bonjour,

Merci de ta réponse je vais regarder ça de plus prés alors.
Jeedom

La rétention de l'information est une forme de constipation du savoir.

Documentation - Trucs & Astuces - Charte

Ericd
Timide
Messages : 59
Inscription : 18 déc. 2014, 16:45
Localisation : Toulouse

Re: Plugin ArduiDom

Message par Ericd » 07 juil. 2015, 22:04

Bonjour à tous,

Est-il possible ou envisageable que le plugin arduidom (network) sache décoder le réseau One Wire afin d'y mettre un réseau de Dallas DS18B20 ?

@+

Eric

Avatar de l’utilisateur
Pierre.pp59
Timide
Messages : 77
Inscription : 20 juin 2015, 21:39
Localisation : Nord

Re: Plugin ArduiDom

Message par Pierre.pp59 » 27 juil. 2015, 18:29

Bonjour à tous,

Est-il possible de piloter les Home Easy HE802SF et HE886 ainsi que les Home Confort ECR-100 à partir d'Arduidom ?
Je n'ai aucun problème avec les prises Home Confort YC-4000B en envoyant le code tri-state sur l'émetteur 433.92.

La radio-commandes fournie avec Home Easy HE802SF n'apparait pas dans log Arduidom mais commande sans problème la prise de courant ET le Home Easy HE886.

L'interrupteur sans fil Home Easy HE842 pilote le Home Easy et son code apparait dans le log Arduidon mais si je met ce même code dans le plugin Arduidom rien ne se passe au niveau du récepteur alors que tout est correct si je fais la même chose avec les 4 prises prises Home Confort YC-4000B

La radio-commande Home Confort Smart Home TEL-010 pilote les Home Confort Smart Home ECR-100 (pas les prises de courant YC-4000B) et n'apparait pas dans le log Arduidom.

En résumé les radio-commandes à code fixe (fournies avec les appareils) apparaissent dans le log Arduidom mais les autres (programmables muti appareils) n'apparaissent pas.
J'ai du mal à cerner le problème et toute aide serait appréciable.

Merci, Pierrot
Jeedom v3.0.11 sur RPI3
Arduidom v24 sur ATmega2560
RFLink R39 sur ATmega2560
Sondes Homemade ATmega 328P/attiny 433/315MHz PT2262 et contacteurs low cost
IPcams, Prises, interrupteurs et commandes diverses
Tasker/Autovoice sur Tablette/Tel

Tealc
Timide
Messages : 167
Inscription : 06 déc. 2014, 20:25

Re: [Sujet officiel] Plugin ArduiDom

Message par Tealc » 29 juil. 2015, 22:50

Chevalir,

si tu veux j'ai un sketch qui tourne et remonte les températures de 5 sondes.

la fonction détecte les sondes quelque soit le nombre de sonde et mets la température dans les variables custom.

je vais ajouter ton bout de code pour stabiliser le sketch car j'ai constaté les mêmes problèmes que toi

Avatar de l’utilisateur
chevalir
Timide
Messages : 140
Inscription : 04 juin 2015, 20:39
Localisation : Ain
Contact :

Re: [Sujet officiel] Plugin ArduiDom

Message par chevalir » 31 juil. 2015, 08:57

Tealc,

En fait j'ai laissé mes 7 sondes OneWire connectées en direct sur mon RPI / Jeedom. Les sondes que j'ai "connecté" sur l'arduidom sont en RF433 avec un petit montage à base d'arduino. J'envoi les les température à l'arduidom via un bricolage du protocole Chacon que je décode dans le sketch de l'arduidom et que je remonte à Jeedom comme des sondes DHT. Mais je veux bien ton sketch pour voir si peux tout connecter à l'arduino !!
chevalir

Avatar de l’utilisateur
Pierre.pp59
Timide
Messages : 77
Inscription : 20 juin 2015, 21:39
Localisation : Nord

Re: [Sujet officiel] Plugin ArduiDom

Message par Pierre.pp59 » 31 juil. 2015, 23:06

chevalir a écrit :Tealc,

En fait j'ai laissé mes 7 sondes OneWire connectées en direct sur mon RPI / Jeedom. Les sondes que j'ai "connecté" sur l'arduidom sont en RF433 avec un petit montage à base d'arduino. J'envoi les les température à l'arduidom via un bricolage du protocole Chacon que je décode dans le sketch de l'arduidom et que je remonte à Jeedom comme des sondes DHT. Mais je veux bien ton sketch pour voir si peux tout connecter à l'arduino !!
Bonjour,

C'est exactement ce que je cherche à faire.
J'ai déjà réalisé des sondes émettant en RF433 que je reçois sur une arduino mais je ne sais pas comment faire pour que les transmissions soient reconnues par Arduidom puis affichées dans Jeedom.
Manquant de temps je te serais très reconnaissant si tu pouvais me fournir le code de la sonde (bricolage du protocole Chacon) et les modifs (décodage) à faire dans Arduidom pour ensuite les afficher le résultat dans Jeedom, comment ?

Bien cordialement,
Pierrot
Jeedom v3.0.11 sur RPI3
Arduidom v24 sur ATmega2560
RFLink R39 sur ATmega2560
Sondes Homemade ATmega 328P/attiny 433/315MHz PT2262 et contacteurs low cost
IPcams, Prises, interrupteurs et commandes diverses
Tasker/Autovoice sur Tablette/Tel

bobox59
Timide
Messages : 485
Inscription : 08 sept. 2014, 13:03
Localisation : Nord

Re: Plugin ArduiDom

Message par bobox59 » 02 août 2015, 08:37

chevalir a écrit :
bln35 a écrit :J'ai comparé les traces lorsque me valeurs customs sont prisent en compte ou pas.
Lorsque ça fonctionne correctement, j'ai le type de trace ci dessous (après chaque requete type [92mArduino, il y a des requete type 91mPHP)

[92mArduino >>[DATA:0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
18.94,18.94,18.75,19.12,18.87,18.75,24.87,18.94,14.63,19.56,17.62,0.00,0.00,0.00,63.20,1022.00][0m
2015-05-12 11:03:09 | debug | [91mPHP=> 0=0 1=0 2=0 3=0 4=0 5=0 6=0 7=0 8=0 9=0 10=0 11=0 12=0 13=0 14=0 15=0 16=0 17=0 18=0 19=0 20=0 21=0 22=0 23=0 24=1 25=0 26=1 27=0 28=0 29=0 30=0 31=0 32=0 33=0 34=0 35=0 36=0 37=0 38=0 39=0 40=0 41=0 42=0 43=0 44=0 45=0 46=0 47=0 48=0 49=0 50=0 51=0 52=0 53=0 54=0 55=0 56=0 57=0 58=0 59=0 60=0 61=0 62=0 63=0 64=0 65=0 66=0 67=0 68=0 69=0 70=18.94 71=18.94 72=18.75 73=19.12 74=18.87 75=18.75 76=24.87 77=18.94 78=14.63 79=19.56 80=17.62 81=0.00 82=0.00 83=0.00 84=63.20 85=1022.00 [0m
2015-05-12 11:03:09 | debug | [92mArduino >> [70>>18.94<<][0m
2015-05-12 11:03:09 | debug | [91mPHP=> 70=18.94 [0m
2015-05-12 11:03:09 | debug | [92mArduino >> [71>>18.94<<][0m
2015-05-12 11:03:09 | debug | [91mPHP=> 71=18.94 [0m

Par contre, après un reboot de Jeedom, et la nom prise en compte de mes valeurs Customs, j'ai des requetes type [92mArduino, mais aucune requete type 91mPHP. Ca explique probablement mon problème.

@Alois, quel fichier/script est chargé de répondre par des requêtes du type 91mPHP ? Pour rappel, pour que ça fonctionne à nouveau je dois stopper le Daemon (car il est vu en service) puis le réactiver pour que mes valeurs customs soient prise à nouveau en compte. Comment puis je faire ces opérations (Stop & start) à la mano en SSH pour solutionner mon problème ?
De votre coté avez vous constatez le même problème ou est ce que cela fonctionne correctement après reboot de Jeedom ?
Merci d'avance pour votre support



Bon après une petite interruption dans mes recherches et comme je n’ai pas vu de réponse sur le forum j’ai repris les tests hier et je pense connaitre la cause et avoir une solution au problème.
Voilà ce que j’ai trouvé.

D’abord les symptômes :
Apres un redémarrage du Deamon ou un reboot du système
1 dans Jeedom le plug-ins indique que le « Deamon n’a pas démarré » ou que le « Deamon ne fonctionnement pas ».
2 Si l’on regarde les logs du Deamon on trouve qqc qui ressemble à ce que bln35 a posté.
3 L’envoi de commande depuis Jeedom vers Arduino MARCHE
4 La remonté d’info de l’Arduino vers Jeedom ne MARCHE PAS.

Pour ceux qui ont le problème et pas le courage de tout lire ;) voila la solution. Dans le Sketch de l’Arduino il faut ajouter une ligne comme ceci :

version d'origine

Code : Tout sélectionner

		
if (DataSerie[0] == 'P' && DataSerie[1] == 'I' && DataSerie[2] == 'N' && DataSerie[3] == 'G') { // ***************************** PING
			Serial.println("PING_OK");
		}
à remplace par

Code : Tout sélectionner

		if (DataSerie[0] == 'P' && DataSerie[1] == 'I' && DataSerie[2] == 'N' && DataSerie[3] == 'G') { // ***************************** PING
			Serial.println("PING_OK");
			  Serial.println("CP_OK"); // @@RC Fix plugins init bug
		}

Pour ceux qui veulent l’explication la voila :


Le problème est lié à la phase d’initialisation entre les trois softs, Plugins, Deamon et Arduino ce qui est normal ayant un peu d’expérience sur la communication entre systèmes je peux dire que les phases d’init entre deux systèmes communicant est toujours très difficile, ici il y a trois systèmes donc c’est pire.
Bref ou est le problème :?: Et bien il est dans les trois systèmes car de ce que j’ai trouvé dans le code de cette init, si il y a le moindre décalage dans les réponses d’un des système tout est coincé.
Le plugins démarre le Daemon puis le Deamon ping l’Arduino et remonte le résultat du ping vers le plugins. Si le plugins à la bonne réponse dans les temps il envoi un ordre de configuration des Pin au Deamon qui l’envoi à l’Arduino, si l’Arduino renvoi configuration ok = CP_OK alors le Deamon est complètement et correctement initialisé.

Coté plugins tout est dans la méthode arduidom::startdaemon() de arduidom.class.php. Si tout va bien (pas d’erreurs) cette méthode lance self::setPinMapping() et c’est tout bon. Le problème coté Deamon est que les envois vers Jeedom sont conditionnés par l’état du booléen Arduino_CPOK et que ce booléen est « false » tant que Deamon n’a pas reçu au moins un « CP_OK ». L’Arduino envoi un CP_OK que si le Deamon lui envoi une commande CPzz….. si vous avez suivie cette commande est envoyé par le Plugins via la méthode self::setPinMapping(). Donc si pas de self::setPinMapping() pas de CP_OK pas de Arduino_CPOK = true donc pas de remontée d’info vers Jeedom.
Mais pourquoi est-ce que le Plugins détecte des erreur dans startdaemon() et bien je ne sait pas vraiment, il y a semble-t-il plusieurs causes, les messages ce croisent, l’Arduino ne répond pas assez vite, le Deamon n’est pas complètement près, bref je n’ai pas toujours la même comportement mais souvent le même résultat.
Il faudrait à mon avis revoir la phase d’init complètement pour éliminer les dépendances entre système, mais c’est une autre histoire. Pour le moment je me suis contenté d’intervenir sur la partie qui est customisable c’est à dire le Sketch de l’Arduino.

J’ai simplement ajouté l’envoi d’un CP_OK en réponse d’une demande de PING pour forcer le Daemon :twisted: à passer Arduino_CPOK à 1. Et voila tout va bien .

Code : Tout sélectionner

		if (DataSerie[0] == 'P' && DataSerie[1] == 'I' && DataSerie[2] == 'N' && DataSerie[3] == 'G') { // ***************************** PING
			Serial.println("PING_OK");
			// @@RC
			if ( CPConfDone ) {
			  Serial.println("CP_OK");
			}
			// end @@RC
		}
J’ai défini un booléen CPConfDone qui est false si l’Arduino n’a jamais reçu de configuration des pin, ce n’est pas indispenssable mais si vous voulez faire la même chose il faux créer la variable comme ceci :

Code : Tout sélectionner

// PARTIE DEFINITION
// Vos #define et autre ici
bool CPConfDone = true;
C’est la fonction InitEEPROM qui passe cette variable à false si besoin. Il faux donc modifier le méthode InitEEPROM comme ceci

Code : Tout sélectionner

    void InitEEPROM() {
    	EEPROM.write(1, ArduiDomVersion); // Pin Mode
    	for (int i = 2; i < 200; i++) {
    		EEPROM.write(i, 'z'); // Pin 0 Mode // RESERVED FOR USB
    	}
    	
    	// @@RC fix bug in plugins
    	CPConfDone=false;
    	// end @@RC
    	
    } // END OF InitEEPROM() 
Encore une fois vous pouvez faire simple et uniquement ajouter Serial.println("CP_OK"); après le Serial.println("PING_OK");

Résultat à chaque PING l’Arduino envoi un CP_OK au Deamon qui set Arduino_CPOK à 1 et autorise les remontées d’info vers Jeedom.

Je peux revoir un peu la méthode d'init du plugin si cela peu aider l'équipe Arduidom.
Bonjour amis jeedomiens, je ne suis pas mort...
apres une tres longue absence pour des raisons diverses et variées... me voila de retour
je vois que ca a bien bien bougé ici, ainsi que sur jeedom !
je vais voir pour integrer un peu tout ca, ces améliorations, les nouveautées de jeedom également.
Merci a tous ceux qui contribuent a ce plugin que j'ai un peu délaissé ces dernier temps
Bobox59 - Le papa du plugin Arduidom
Jeedom sur Serveur Dell - RPi 2 (Dev) - RPi 1B (Dev,Tests)
Modules Radio DIY, Detecteurs IR Radio Electro-Depot & Tike-Securité, Prises Radio Eurodomest 972086 & SITE RCS-K02 (Action)

I<3JEEDOM

Avatar de l’utilisateur
bravan
Timide
Messages : 202
Inscription : 30 janv. 2015, 21:25
Localisation : Dijon

Re: [Sujet officiel] Plugin ArduiDom

Message par bravan » 02 août 2015, 09:43

Cool super nouvelles ça ! Ça sent le passage en stable prochainement ? :)

Moi j aurais une petite demande concernant les logs qui sont très bavard


Envoyé de mon Nexus 4 en utilisant Tapatalk
Jeedom 3.2.9 sur Pi3
RFXcom - GCE Téléinformation USB - Jeedouino - Xiaomi - BLEA

bobox59
Timide
Messages : 485
Inscription : 08 sept. 2014, 13:03
Localisation : Nord

Re: [Sujet officiel] Plugin ArduiDom

Message par bobox59 » 03 août 2015, 13:54

bravan a écrit :Cool super nouvelles ça ! Ça sent le passage en stable prochainement ? :)

Moi j aurais une petite demande concernant les logs qui sont très bavard


Envoyé de mon Nexus 4 en utilisant Tapatalk
oui j'aimerai un passage en stable

evidemment de la ils seront bien plus "discrets" car la j'avoue avoir mis le paquet de logs

je suis dessus car j'ai pas mal de pertes en performances depuis la mise a jour de jeedom (1.189 => 1.203.0.27) que je ne comprends pas
Bobox59 - Le papa du plugin Arduidom
Jeedom sur Serveur Dell - RPi 2 (Dev) - RPi 1B (Dev,Tests)
Modules Radio DIY, Detecteurs IR Radio Electro-Depot & Tike-Securité, Prises Radio Eurodomest 972086 & SITE RCS-K02 (Action)

I<3JEEDOM

Nono056
Timide
Messages : 141
Inscription : 01 sept. 2014, 22:49

Re: [Sujet officiel] Plugin ArduiDom

Message par Nono056 » 03 août 2015, 16:56

Salut!
il me semblait avoir vu quelqu'un mettre un tuto pour personnaliser arduidom avec un lcd et keypad mais je ne retrouve plus le topic...
Quelqu'un a un lien?
Merci d'avance

Répondre

Revenir vers « [Catégorie] Protocoles domotiques »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités