Page 1 sur 1

Recuperer données d'un raspi et les affichez sur un autre

Posté : ven. 7 oct. 2022 16:51
par bgwen53
Bonjour
J'ai 2 Raspberry Pi branché sur un réseau en Ethernet , sur un Raspberry j'ai une sondes de température DS1820 et je crée un fichier log des températures.
Est t'il possible avec le second Raspberry Pi de recuperer les données du premier afin d'afficher la dernière valeur sur une page php ??

Comment faire pour interroger le premier Raspberry ?

Code : Tout sélectionner

// Recuperation de la sonde branché sur PI Piscine
	function getMemValues2($x,$flag=true){
	$x=strtoupper($x);
	$retval='NA';
	$resu=file(dirname(__FILE__)."http://xxxx.ddns.net:580/logs/1-Wire-values");
	$resu=file(dirname(__FILE__)."http://192.168.1.11/home/www/logs/1-Wire-values");
	foreach ($resu as $val) {
		if (strpos($val,$x)!==false){
			$rec=explode("=",$val);
			$retval=trim($rec[1]);
			switch($x){
				case 'TINT':
					$retval.='°C';
					$retval.="/$rec[2]";
					break;
				}
			return $retval;
			}
		}
	return $retval;
	}
Merci d'avance pour votre aide

Re: Recuperer données d'un raspi et les affichez sur un autre

Posté : ven. 7 oct. 2022 17:26
par jelopo
Bonjour,

Oui, c'est possible de récupérer des données d'un PI sur un autre qui sont sur le même réseau avec SSH.
Par contre au niveau sécurité c'est très mauvais car la commande sera effectuée par PHP et du coup avec un navigateur on aurait accès complet au premier PI.

Pour lire la dernière ligne du contenu d'un fichier d'un pi:

$ ssh user@pi-distant tail -1 /chemin-complet/fichier.log

Mais bon puisque ça va être automatisé le script PHP pourrait faire tout et n'importe quoi sur pi-distant, ce qui est très mauvais.

Je propose d'installer un petit bout de logiciel (serveur MQTT) et après seules les données voulues seront publiées :

Sur le pi-serveur installer MQTT
(voir cet article http://www.framboise314.fr/linternet-de ... avec-mqtt/)
pi@pi-server$ sudo apt update && sudo apt install mosquitto mosquitto-clients
Sur les 2 pi installer mosquitto-clients

Code : Tout sélectionner

pi@pi-server$ sudo apt update && sudo apt install mosquitto-clients
Après 1 ligne à ajouter avant l'écriture en log sur pi-distant:

Code : Tout sélectionner

pi@pi-distant $  mosquitto_pub -h <addresse-pi-serveur> -t DS1820/ref1 -m <temperature> -r

Et 1 ligne à ajouter dans le script PHP pour lire le contenu

Code : Tout sélectionner

pi@pi-php $  mosquitto_sub -h <addresse-pi-serveur> -t DS1820/ref1 -m <temperature> -C1
Faire des essais à la main avant d'ajouter dans PHP.

EDIT: J'ai répondu avant que le bout de code PHP soit publié. Ou bien j'avais pas vu qu'il était là. Oups :oops:

A+

Re: Recuperer données d'un raspi et les affichez sur un autre

Posté : ven. 7 oct. 2022 18:42
par bgwen53
Merci jelopo ,Un peu trop compliqué MQTT pour moi !!

Ce que je veux c'est recuperer la valeur de TINT qui est dans un fichier log sur un autre PI

Code : Tout sélectionner

/ Recuperation de la sonde branché sur PI Piscine
	function getMemValues2($x,$flag=true){
	$x=strtoupper($x);
	$retval='NA';
	$resu=file(dirname(__FILE__)."http://xxxx.ddns.net:580/logs/1-Wire-values");

Re: Recuperer données d'un raspi et les affichez sur un autre

Posté : sam. 8 oct. 2022 12:55
par destroyedlolo
jelopo a écrit :
ven. 7 oct. 2022 17:26
Par contre au niveau sécurité c'est très mauvais car la commande sera effectuée par PHP et du coup avec un navigateur on aurait accès complet au premier PI.
Il suffit d'utilisateur qui n'a aucun autre droit que celui d'accéder au répertoire où il y a le fichier + nologin.

Autres alternatives (par order de complexité):
  • passer par du sftp (du coup, il ne pourra pas se logger)
  • y mettre un serveur web minimum et l'interroger par un webservice
  • créer un démon qui expose la valeur et qu'on interroge par les socket
Mais tout ca tient de l'usine a gaz, MQTT est vraiment fait pour ca et permet surtout d'ajouter autant de fournisseurs / consomateur que l'on veut.

Re: Recuperer données d'un raspi et les affichez sur un autre

Posté : sam. 8 oct. 2022 23:15
par piper
Il y a mille moyen :
ssh (pas secure)
ftp (mieux surtout si tu fait un push)
smb (comme un disque partagé)
une api web
mqtt
etc..etc..etc...

Re: Recuperer données d'un raspi et les affichez sur un autre

Posté : mar. 11 oct. 2022 10:47
par bgwen53
Bonjour , j'ai opter pour l'utilisation de scp afin de recuperé le fichier 1-Wire-values sur mon second raspberry .

Code : Tout sélectionner

scp -q /home/www/logs/1-Wire-values root@192.168.1.19:/home/www/logs2/1-Wire-values

Re: Recuperer données d'un raspi et les affichez sur un autre

Posté : mer. 12 oct. 2022 09:40
par jelopo
Bonjour,

Pour juste pour information:
Cette commande est "dangeureuse" car elle utilise le compte root. L'utilisateur qui pousse le fichier sur l'autre PI à tous les droits sur cette machine.
Si cet utilisateur est celui qui lance le serveur web, en théorie un hacker est root sur le second serveur PI, c'est donc un trou de sécurité. Il faut juste en avoir conscience. Si tes Pi ne sont pas sur le net et que tu est le seul administrateur, c'est moins grave et toute la responsabilité repose sur tes épaules. Il te faut alors être vigilant.

Pour amoindrir ce risque, je recommanderais de ne jamais utiliser l'utilisateur root. (Je sais, c'est pas facile!!!)

Dans ton cas, il serait mieux de transférer les fichier avec un utilisateur qui a les droits en écriture sur le répertoire /home/www/logs2/

A+