Les VM's

Échangez autour du hardware et des fonctionnalités du boitier Server de la Freebox Delta
RĂ©pondre
Axellum
Freenaute Patient
Messages : 35
Enregistré le : 11 mars 2019, 09:17
Freenaute : En Migration
Connexion : ADSL
Commande : 09 sept. 2014
Expédition : 13 sept. 2014

Les VM's

Message par Axellum » 10 dĂ©cembre 2019, 14:32

Salut, j'aimerai partager ici nos tests, infos et astuces pour les VMs.

Étant un grand débutant, je vais commencer par les astuces très basiques:

1/ Le shell depuis windows:

Pour simplifier le copie / coller notamment, et pour une meilleur réactivité il est possible d'avoir le shell de sa VM depuis l invite de commande windows (10). Faites un clic droit sur le menu démarrer, prendre Windows PowerShell.
Taper ensuite sur l invite de commande sans les guillemets:
" ssh Login@192.168.0.X "
En adaptant avec votre login et votre IP de la VM, il vous sera demandé votre passe puis vous serait sur le shell de votre VM.

2/ Environnement graphique:

MAJ: Ici vous avez l'installation pas à pas d'un iso Debian 10.3, avec la mise en français, la commande pour le fuseau horaire (en commentaire), et comment se connecter depuis le bureau à distance Windows:
https://youtu.be/I7E1G6HbcEI

Même s'il n est pas conseillé d'avoir un environnement graphique au vus des ressources disponible, il est tout à fais possible d'en faire tourné un pour le fun ou dans mon cas mieux comprendre ce que je fais, quitte à ne pas le lancer quand on veut être en mode serveur.
Après plusieurs essais plus ou moins fructueux, je pense que le plus simple est d installer l'iso de Debian stable pour arm64. J'ai activer l’écran dés le départ de l installation, et tout à bien fonctionné (par contre Ubuntu n'avais pas voulu). Mieux vaut prendre un environnement léger, comme xfce ou mate. J'avais installer les deux, bien m en as prit vus j ai casser xfce en changeant la résolution d’écran...
J'ai pu y installer plex et pi hole avec l'aide du post dédier sur ce forum, la seul chose c'est que " sudo " ne fonctionnait plus dans mon qua, remplacer par " su - " pour me connecter en root et résoudre le problème.

MAJ: Pour installé mate sur un serveur débian:
sudo apt-get install xrdp
echo xfce4-session > ~/.xsession
ATTENTION: Utilisé firefox ou chrome, il peut y avoir des incompatibilités en fonction des butineurs internet!!
Ressources VM freebox avec environnement graphique - pi hole - plex en fonctionnement.
Ressources VM freebox avec environnement graphique - pi hole - plex en fonctionnement.
ecran distant vm.PNG (174.48 Kio) Vu 3481 fois
On peu accéder au bureau linux par la connexion de bureau à distance windows, j'ai suivis cette doc:

https://www.demenageur-site.com/blog/20 ... s-windows/

ou plutôt les deux premières commandes, ne trouvant pas la ligne à modifier ensuite:
" sudo apt-get install xrdp "
" echo xfce4-session > ~/.xsession "
Il vous faudra peut être activer le mode développeur de Windows 10 pour avoir son outils de connexion à distance (dans accessoires windows), comme décrit ici au début:

https://www.zebulon.fr/astuces/divers/e ... ws-10.html

Avec deux processeurs et 957Mo de RAM ça marche correctement, la quantité de RAM ayant l'aire d'être le plus limitatif (avec pi hole en fond, le bureau actif, quand plex actualise les bibliothèques je suis a plus de 90% d'utilisation RAM par exemple, les processeurs entre 20% et 70%).

Ici j'ai fais une vidéo avec quelques explication:
https://www.youtube.com/watch?v=KA6nN75TpFg
Modifié en dernier par Axellum le 26 février 2020, 11:19, modifié 3 fois.


Axellum
Freenaute Patient
Messages : 35
Enregistré le : 11 mars 2019, 09:17
Freenaute : En Migration
Connexion : ADSL
Commande : 09 sept. 2014
Expédition : 13 sept. 2014

Re: Les VM's

Message par Axellum » 14 dĂ©cembre 2019, 11:42

3/ Vus que le gestionnaire de téléchargement de l interface free ne marche pas en agrégation, on peu le remplacer par un gestionnaire de téléchargement sur une VM avec interface graphique avec uGet par exemple(sudo apt update && sudo apt install uget ), qui gère les catégories, mais il y as du choix.
En ouvrent le programme avec le bureau Ă  distance, il prendra directement le lien que vous aurez copier sous Windows (ou autre).
Il y as aussi wget en ligne de commande ( wget -P $HOME/dossier\ de\ destination http://www.site.org/rep/01/fichier.txt - pour choisir le répertoire de réception) mais moins pratique quand on n as pas l habitude de travailler avec le shell ^^.

criss
Freenaute Patient
Messages : 33
Enregistré le : 03 janvier 2011, 22:34

Re: Les VM's

Message par criss » 21 dĂ©cembre 2019, 18:21

Hello Ă  tous
Quelqu'un à essayé Lujam en VM de chez nui.fr ?
Solution cerbersecurité qui peut tourner sur notre freebox serveur
Criss

https://actu.fr/normandie/rouen_76540/m ... 39622.html

Lokaspoon
Modérateur
Messages : 818
Enregistré le : 07 décembre 2018, 00:45
Freenaute : En Migration
Connexion : ADSL
Commande : 04 déc. 2018

Re: Les VM's

Message par Lokaspoon » 22 dĂ©cembre 2019, 19:18

Je ne vois pas trop l'intérêt. C'est incomplet donc ça nécessite de toute façon une protection en local sur l'ordinateur.
J'ai pris le large, bonne continuation.

Axellum
Freenaute Patient
Messages : 35
Enregistré le : 11 mars 2019, 09:17
Freenaute : En Migration
Connexion : ADSL
Commande : 09 sept. 2014
Expédition : 13 sept. 2014

Re: Les VM's

Message par Axellum » 16 janvier 2020, 18:14

Sinon on peu aussi faire de jolis tableau de bord en installant Influxdb - base de données- et Chronograf ou Grafana -pour l affichage en html- sur sa VM.
On pourra remplir la base donné via le reseau, par exemple avec Telegraf installé sur les autres postes pour suivre les informations réseaux / disque dur / % utilisé par le processeur etc.. On peut aussi se faire une petite station meteo, mais il faudra un peu plus de travail ^^.

Vus que j'ai suivis plusieur tutoriel avec notament le livre "Raspberry Pi '" de Francois Mocq, je vous laisse chercher pour l installation d influxdb et chronograf sur une VM. Vous pouvais prendre ces sites qui m'on aidé:
http://ticksurraspberrypi3.blogspot.com ... egraf.html

https://theogindre.fr/2018/02/16/mise-e ... -telegraf/

https://myvmworld.fr/centraliser-metriq ... b-grafana/

Voila ce que l on peu optenir:
TBordAsus.png
TBordAsus.png (177.17 Kio) Vu 2623 fois
Tableau de bord vite fais pour mon portable windows.
TBordMeteo.png
TBordMeteo.png (114.37 Kio) Vu 2623 fois
Les données de ma "station météo" (une puce sonde monter sur un raspberry, mais cela devrais fonctionner avec une carte wifi esp8266, j'y reviendrait peut etre plus tard).


Axellum
Freenaute Patient
Messages : 35
Enregistré le : 11 mars 2019, 09:17
Freenaute : En Migration
Connexion : ADSL
Commande : 09 sept. 2014
Expédition : 13 sept. 2014

Re: Les VM's

Message par Axellum » 02 fĂ©vrier 2020, 21:13

Poursuivons donc:
Je suis passer sur Graphana pour le tableau de bord, le rendu est meilleur, et on peu en importer des tout prĂŞt pour les modifier...
Graphana.PNG
Graphana.PNG (153.35 Kio) Vu 2454 fois
Pour transformé notre box en serveur météo, je cherche encore à amélioré le code, notamment pour faire des objets connecté pouvant interagir entre eux., et à maximiser l'autonomie pour la sonde extérieure. Je vais car même vous présenter le projet en l’état actuel:

Objectif:
- Centraliser un ensemble de capteurs sans fils qui pourront conditionné des actions (interrupteurs ou autre), on commence par un capteur météo.
- Garder un historique des donnés.
- Avoir un affichage sympa.

Materiels:
Tout vas dépendre de vos choix, avec des esp8366 esp01 et des bm380 sur aliexpresse on est à moins de 5€, mon projet avec le kit de départ est à 45€:

-Pour la base, j'ai opter pour un kit de départ arduino à 15€ pour avoir les fils, plaques d'essais, diodes , résistances, petits capteurs et un arduino uno.
- Pour le contrôleur wifi, il faut un esp8266 ou esp32. Plusieurs version existent, qui vas de moins de deux euros à une quinzaine d'euros, pour l instant je teste sur un NodeMCU Lua Lolin V3 Module ESP8266 (ESP-12E) à 5€ - 7€ sur ebay plus simple à programmer que les esp8288 esp 01. Ces modules peuvent se programmer simplement, avec beaucoup d exemple et didac disponible.

https://www.amazon.fr/gp/product/B06Y1Z ... =UTF8&th=1
https://www.aliexpress.com/item/4000143 ... 4c4dYnEdFM

- Pour le capteur, j'ai prit un bm680 à 20€, mais on peu partir sur des capteurs plus simple à quelques euros.

https://www.amazon.fr/gp/product/B07GQQ ... UTF8&psc=1
https://www.aliexpress.com/item/3299204 ... 4c4dYnEdFM

- De quoi alimenter le tout (cordon usb ou batterie)
20200119_120157.jpg
20200119_120157.jpg (85.96 Kio) Vu 2454 fois
Logiciels:
-Arduino IDE, disponible sur toutes les plateforme, il vas nous servir à programmer nos esp. Il faudra importer les bibliothèques en fonction de notre matériel et le 'drivers' de la carte:
https://projetsdiy.fr/programmer-esp826 ... ur-client/
Bibliothèque: Onwire, adafruit unified sensor, adafruit bme 680, influxdb, dallas temperature, sht1x sensor library for espx, espmqt, pubsubclient.
La plupart des bibliothèques seront accessible via le logiciel, un ou deux devront être importer manuellement.
-Sur notre ou nos serveur, au choix: Influxdb et graphana pour un dash board, et ou un serveur mqtt (mosquitto par exempla) et Node RED. Je suis en pleine découverte de nodered et du protocole mqtt, mais cela devrait permettre de reprendre les données facilement avec moins de consommation pour l’envoi, et la gestion par un home assistant. A noté que nodered peu s occuper de l’envoi en base de donné.

https://gist.github.com/gyassine/a5eda1 ... f22ac96c0d

On branche l'esp8266 avec le bme680:
D1 -> scl
D2 -> sda
3v -> 2-6V
G -> gnd

Il ne nous reste plus qu'as mettre le programmes dans notre esp via Arduino IDE, je vous partage mon code actuel sur lequel il reste pas mal de travaille, mais qui peu donner des idées de modification. Le code permetle branchement de la sonde bme680, sht10 et DS18B20 (n'hésitez pas à demander pour plus d'infos).

Attention ce code est un assemblage de plusieurs exemples, il est trés imparfais!

Code : Tout sélectionner

#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <InfluxDb.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <SHT1x.h>
#include "PubSubClient.h"

// Data wire is connected to GPIO15
#define ONE_WIRE_BUS 15
#define INFLUXDB_HOST "192.168.0.xx"          // Mettre l'adresse ip d influxdb
#define INFLUXDB_USER "user_meteo"          // Mettre l'utilisateur d influxdb
#define INFLUXDB_PASS "xxxxxxxxxxx"             // Mettre le passe influxdb
#define dataPin  12  // NodeMCU pin D6 pour sht1x
#define clockPin 14  // NodeMCU pin D5 pour sht1x

SHT1x sht1x(dataPin, clockPin); // instantiate SHT1x object

// GPIO where the DS18B20 is connected to
const int oneWireBus = 15;    // pin D8 pour DS18B20

//////////////////////////////////////////
const char* mqtt_server = "192.168.0.xxxxxx";                       // Adr de serveur mosquitto
//const char* mqtt_user = "admin";                               // login sur serveur mosquitto
//const char* mqtt_password = "xxxxxxxxxxx";                // Passe sur serveur mosquitto
char msg_envoye[50];
char ch_result[10];
const char* ssid = "xxxxxx                                         // Mettre le SSID de votre connection wifi
const char* password = "xxxxxxxx";                          // Mettre le passe de votre connection wifi

WiFiClient espClient; // déclaration Objet wifi
PubSubClient client(espClient); // déclaration objet mosquitto
unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE  (50)
char msg[MSG_BUFFER_SIZE];
char msg1[MSG_BUFFER_SIZE];
char msg2[MSG_BUFFER_SIZE];
char msg3[MSG_BUFFER_SIZE];
char msg4[MSG_BUFFER_SIZE];
char msg5[MSG_BUFFER_SIZE];
int value = 0;
void setup_wifi() {
  delay(10);
  // We start by connecting to a WiFi network
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  randomSeed(micros());
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

  // Switch on the LED if an 1 was received as first character
  if ((char)payload[0] == '1') {
    digitalWrite(BUILTIN_LED, LOW);   // Turn the LED on (Note that LOW is the voltage level
    // but actually the LED is on; this is because
    // it is active low on the ESP-01)
  } else {
    digitalWrite(BUILTIN_LED, HIGH);  // Turn the LED off by making the voltage HIGH
  }
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "ESP8266Client-";
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    if (client.connect(clientId.c_str())) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.publish("outTopic", "hello world");
      // ... and resubscribe
      client.subscribe("inTopic");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}
////////////////////////////////////////////
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);

// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);

int temint;
int humi;
int pressi;
int gasres;
ESP8266WiFiMulti WiFiMulti;
Influxdb influx(INFLUXDB_HOST);
 
Adafruit_BME680 bme; // I2C

void setup() {
  Serial.println(" ### Hello ###");
  pinMode(BUILTIN_LED, OUTPUT);     // Initialize the BUILTIN_LED pin as an output
  Serial.begin(115200);
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);

  influx.setDbAuth("Test01", INFLUXDB_USER, INFLUXDB_PASS);
  Serial.println("Setup done");
  
  while (!Serial);
  Serial.println(F("BME680 test"));
 
  if (!bme.begin(0x76)) 
  {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }
 
  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms

 }
void loop() {
  if (! bme.performReading()) 
  {
    Serial.println("Failed to perform reading :(");
    return;
  }
  temint = bme.temperature;
  humi = bme.humidity;
  pressi = bme.pressure / 100.0;
  gasres = bme.gas_resistance / 1000.0;
 
  Serial.print("Temperature = ");
  Serial.print(bme.temperature);
  Serial.println(" *C");
 
  Serial.print("Pressure = ");
  Serial.print(bme.pressure / 100.0);
  Serial.println(" hPa");
 
  Serial.print("Humidity = ");
  Serial.print(bme.humidity);
  Serial.println(" %");
 
  Serial.print("Gas = ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" KOhms");
 
  sensors.requestTemperatures(); 
  float temperatureC = sensors.getTempCByIndex(0);
  Serial.print("Temp sonde = ");
  Serial.print(temperatureC);
  Serial.println(" ÂşC");

  float temp_terre;
  float humidity_terre;

  temp_terre = sht1x.readTemperatureC(); // Read values from the sensor
  humidity_terre = sht1x.readHumidity();

  Serial.print("Temperature terre: "); // Print the values to the serial port
  Serial.print(temp_terre, DEC);
  Serial.print(" °C");
  
  Serial.print("Humidité terre = ");
  Serial.print(humidity_terre);
  Serial.println(" % /n");

  InfluxData row("temperature");
  row.addValue("htemperature", bme.temperature - 1);
  row.addValue("Pression", bme.pressure / 100.0);
  row.addValue("Humidite", bme.humidity);
  row.addValue("Gas", bme.gas_resistance / 1000.0);
  row.addValue("dtemperature", temperatureC);
  row.addValue("temp_terre", temp_terre);
  row.addValue("humidity_terre", humidity_terre);
  
  influx.write(row);
  Serial.println("Setup done");

  pinMode(BUILTIN_LED, OUTPUT);     // Initialize the BUILTIN_LED pin as an output
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);

  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  unsigned long now = millis();
  if (now - lastMsg > 2000) {
    lastMsg = now;
    ++value;
    snprintf (msg, MSG_BUFFER_SIZE, "%.2f ", bme.temperature - 1);
    Serial.print("Publish message: ");
    Serial.println(msg);
    client.publish("sensor/temperature", msg);

    snprintf (msg1, MSG_BUFFER_SIZE, "%.2f", bme.humidity);
    Serial.print("Publish message1: ");
    Serial.println(msg1);
    client.publish("sensor/humidite", msg1);
    
        snprintf (msg2, MSG_BUFFER_SIZE, "%.2f ", bme.pressure / 100.0);
    Serial.print("Publish message2: ");
    Serial.println(msg2);
    client.publish("sensor/pression", msg2);

     snprintf (msg3, MSG_BUFFER_SIZE, "%.2f ", bme.gas_resistance / 1000.0);
    Serial.print("Publish message3: ");
    Serial.println(msg3);
    client.publish("sensor/gas", msg3);

     snprintf (msg4, MSG_BUFFER_SIZE, "%.2f ", temp_terre);
    Serial.print("Publish message4: ");
    Serial.println(msg4);
    client.publish("sensor/temp_terre", msg4);

     snprintf (msg5, MSG_BUFFER_SIZE, "%.2f ", humidity_terre);
    Serial.print("Publish message5: ");
    Serial.println(msg5);
    client.publish("sensor/humidity_terre", msg5);
  }
  delay(5000);
}
Il vous faudra renseigner votre SSID wifi, passe wifi, adresse d influxbd, ustilisateur et passe (la table se crera a la premiere connection), adresse ext. pour le serveur mqtt., et modifier à votre convenence (et sortir les carteurs non utilisé). Le code remplis la base donné et envois les infos sur le serveur mqtt, le mieux est de choisir entre les deux, le mqtt devant permettre de tout gerer, par nodered ou autres serveur domotique (je cherche encore de ce coté là encore).
20200202_145830.jpg
20200202_145830.jpg (126.86 Kio) Vu 2454 fois
Il me reste encore à exploité les donné par nodered, faire interagir capteur et par example des relais, voir si nodered fais de jolie graphique ex.... Les possibilitées sont nombreuse, de la detection de présence, luminositée, comera...

J'espére avoir donné envis à ceux qui ne connaissaient pas ces petites bestioles, avec quelque bons sites et vidéos, on arrivent à faire des choses que je pensait réservé aux ingénieurs lol. Si vous voyez des erreurs, améliorations, n'hésitez pas à le dire, la découverte ne date que de quelque semaine pour moi. De même si vous souhaitez plus d'infos!

Avos projets!

Axellum
Freenaute Patient
Messages : 35
Enregistré le : 11 mars 2019, 09:17
Freenaute : En Migration
Connexion : ADSL
Commande : 09 sept. 2014
Expédition : 13 sept. 2014

Re: Les VM's

Message par Axellum » 25 fĂ©vrier 2020, 11:06

Je pense que ce post sera le dernier de cette série, vus que je m’éloigne de plus en plus d'une utilisation classique de la Freebox. Du coup j'ai fais une petite chaine sur YouTube pour partager plus facilement ce que j'avais du mal à trouver:
https://www.youtube.com/channel/UCmMnfE ... oTaCP0SUg/

Pour finir, je suis passer sous Home assistant sur une Vms Debian. Hass permet ensuite d'installer par son interface pas mal de chose: Pi Hole, serveur mqtt, node red, influxbd et grafana ext.

Il as surtout l'avantage de pouvoir faire et modifie très simplement les programme sur les esp8266 et ESP32 avec un add on, ESPHome.
Du coup, il devient possible de gérer le 433Mz pour quelques euros (j’attends encore du matériel pour faire le test, j'ai juste vus des didacs pour l'instant, mon capteur bas de gamme me dit n'importe quoi), de se faire une télécommande IR (pas testé), et surtout de faire un écran tactile wifi pour visionner facilement des données (météo, débits, machine connecté et bien plus encore) et, peu être, de commander ses prises ou autre matériel référencé sur Home assistant (c'est ce qu il me reste à faire). J’espère finalisé mon projet d’écran d'ici quelques semaines, si j ’arrête d'ajouter de nouvelles fonctions ^^.
Affichage sur ecran Nextion en wifi des informations de home assistant installé sur Freebox Delta. Page météo (les logos sur trois jours ne sont pas encore fonctionnels).
Affichage sur ecran Nextion en wifi des informations de home assistant installé sur Freebox Delta. Page météo (les logos sur trois jours ne sont pas encore fonctionnels).
20200225_104010.jpg (134.61 Kio) Vu 2194 fois
Page pour les infos de la delta, en construction.
Page pour les infos de la delta, en construction.
20200225_104028.jpg (131.28 Kio) Vu 2194 fois
L ’écran est à 30€ (il y as plus petit, plus gros aussi ^^), plus 5€ pour l esp, soit un coup total de 35€ l’ écran sans fils (sur aliexpress par contre).

Pour les 433, je pense qu'on peu aussi adapter ce qui se fais sur Raspberry pour ajouter un RFLink en USB (home assistant (entre autre) le prend en charge, et la delta "voie" les Arduino brancher en USB si on installe le nécessaire, par exemple en installant Arduino IDE sur la Debian).

https://projetsdiy.fr/fabriquer-mini-ga ... mprime-3d/


RĂ©pondre

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 4 invités