[Rpi] Problème versio mono


#1

Salut,

J’ai installé la dernière version de constellation sur mon rpi 2b, il a donc installer mono version 10.
J’ai voulu test un package python (celui de base) mais j’ai ce message :

The package ‘Sensor’ requiered .NET 4.5 or later (equivalent to Mono 3.12 or later) and your current installation is ‘3.10.0 (mono-3.10.0-branch/ce003f4 Tue Nov 25 20:18:29 UTC 2014)’ !

Une idée du problème ?


#2

Hum, la version 3.10 (mono-3.10.0-branch/ce003f4 Tue Nov 25 20:18:29 UTC 2014) date de 2014 !

Le WPI Constellation installe cette version très spécifique pour les ARMv6 car les versions plus récentes de fonctionnent pas ! ARMv6 = RPi v1 !

Mono 3.10 = .NET 4.0 ! Donc tu peux dans VS, créer un package Python en .NET 4.0 pour que ca fonctionne !

Ceci dit, sur RPi V2 ou +, on peut installer une version plus recente de Mono 4.x avec le support de .NET 4.5 et 4.6 !

Je me demande si il n’y a pas eu une regression sur ce point dans la nouvelle version du Web Platform Install de Constellation pour Linux. Il aurait “cru” être sur un ARMv6 et donc aurait installé Mono 3.10 ce qui bloque le runtime en .NET 4.0 !

En attendant tu peux comme je le disais, changer le “target platform” de ton package en .NET 4.0 et en parallèle je check le WPI et te tiens au courant !


#3

Alors j’ai créé un package python pour net 4 mais voici le problème : (je n’ai rien changé au code)

[piSdB/Sentinel] 11:59:25 : Downloading Sensor (URI:http://192.168.1.50:8088/packages/Sensor.zip) [Server/PackageMiddleware] 11:59:25 : 'piSdB' getting '/packages/Sensor.zip' (Local path: C:\Program Files (x86)\Constellation Platform\Packages\Sensor.zip) [piSdB/Sentinel] 11:59:25 : Unzipping Sensor [piSdB/Sentinel] 11:59:26 : Sensor (Package 'Sensor' version 1.0) is started with the PID 3429 (/opt/constellation-sentinel/Packages/Sensor/Sensor.exe) [piSdB/Sensor] 11:59:39 : Package connected (Package:1.0 Constellation:1.8.1.16258) [piSdB/Sensor] 11:59:40 : Declaring PackageDescriptor for Sensor [piSdB/Sensor] 11:59:40 : Waiting for settings ... [piSdB/Sensor] 11:59:40 : Updating 0 setting(s) [piSdB/Sensor] 11:59:40 : Calling OnStart on Constellation.PythonProxy.PythonPackage [piSdB/Sensor] 11:59:41 : Starting script '/opt/constellation-sentinel/Packages/Sensor/Scripts/Demo.py' [piSdB/Sensor] 11:59:58 : Package disconnected (Connection closed gracefully:False)

Pas d’infos en plus


#4

Je me suis trompé c’est un Rpi B+ du coup j’aurais pas plus que mono 3.10 si j’ai bien compris ?

Mais ça explique pas pourquoi les packages se ferment tous seul.


#5

Ok ca me rassure, il n’y a pas de régression/bug dans les installeurs !

Comme il a détecté que tu étais sur un RPi v1 (donc ARMv6), il a forcé l’installation de Mono 3.10 (car au dessus, ça ne marche pas).

Du coup, tu es forcé d’utiliser des packages en .NET 4.0.

Je vais creuser cette histoire de reconnexion/fermeture des packages ! Perso ca marche plutôt bien, S-Energy ou encore S-Opener présentés sur mon blog sont des packages .NET 4.0 qui tournent depuis près de 2 ans sur RPi V1.

Je te tiens au courant…


#6

Hello

Je viens de réinstaller mon capteur de luminosité sur le toit de ma maison; il est branché en i2c sur un RPI B standard.
En refaisant une install from scratch avec mono 3.10, ça passe du premier coup. Mon package est compilé en C# sur fw 4.0, il boote sans problème.
Sauf que j’avais oublié les lib Python pour mon package, mais ça c’est un autre problème… :wink:

@Sébastien, il faut enrichir ta collection de devices IoT avec un B+ pour tester ! :wink:


#7

Un autre problème lié a Mono, dans sa version 4.6.
Une exception est lancée “System.Net.Sockets.SocketException (0x80004005): Operating system sockets do not support ReuseAddress.”.
Une issue est ouverte sur GitHub mais en attendant le fix qui doit arriver sur la version 4.8 il faut forcer l’utilisation de Mono 4.4


#8

Ça ne fonctionne toujours pas en mettant mono 4.10

Demo.py se lance mais il se passe rien après :frowning:


#9

J’ai toujours pas trouvé de solution pour un rpi B+ :frowning:


#10

Bon j’ai un peu plus creusé par rapport au tuto, en debug le code fonctionne (j’ai bien les messages, le SO et les messages callback) mais sur mon rpi rien ne se passe après le lancement de Demo.py


#11

Hello,

Même problème chez moi avec un Raspberry A où c’est Mono 3.10 qui s’est installé.
En fait le programme est écrit & lancé mais dans un htop il n’y a que les .exe qui sont lancés, aucun script python


#12

Bonjour Rom,

Tu as bien installé les prérequis pour faire tourner des packages Python ? Notamment pyzmq et enum34 ?

Voir : https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-python/#Installer_Python_sur_Linux

A l’avenir, je vais étudier la possibilité pour que l’installeur d’une sentinelle sur Linux installe automatiquement ces prérequis ! Je viens de (re)tester un package from scratch depuis le SDK Constellation sous VS2017 avec une Constellation fraichement installée (1.8.2.17117) sur un RPi2, ca marche parfaitement dès lors que les prérequis sont bien installés (enum34 & pyzmq) autrement, on a juste les .exe de lancés !

A+


#13

Hello,

Pour info, le Web Platform Installer sur Linux installe automatiquement des dépendances nécessaires pour faire tourner des package Constellation Python (zmq & enum34).

Je mettrais les docs à jour dans ce sens !

Je viens de refaire des tests, deux RPis : un V1 B+ et un V2. Sur le V2, je lance le WPI pour déployer le serveur, console et sentinelle. Sur le V1 B+, je déploie toujours via le WPI la sentinelle que j’enregistre sur la Constellation installée sur le RPi 2.

Via le SDK Constellation sur un VS2017, je crée un package Python sur le target “.NET 4.0” (important car sinon ca ne marche pas sur un RPi V1). Je publie le package depuis VS2017 sur la Constellation du RPi V2.

Puis via la Console Constellation, je déploie le package sur la sentinelle du Rpi V1 B+ et la sentinelle locale du RPi2.

Résultat : les deux instances du package fonctionnent parfaitement, MC, SO, Log & co …

Ca fera l’objet du prochain webcast :wink:

A bientot


#14

Ok je re testerais à l’occasion.

Tu prends raspbian ici ?? https://www.raspberrypi.org/downloads/raspbian/


#15

Hello,

Je viens d’installer Constellation sur mon raspberry 3B+, par contre je ne comprend pas pourquoi il ne m’installe que la version 3.8.2 de mono ? du coup je ne peux pas installer le server constellation. J’ai tenté de le faire manuellement avec cette procédure mais ça me dit que le package est déjà dans sa version la plus récente!

Je alors pensé que mon raspberry n’était pas un 3B+ mais d’après la config si…:

processor       : 3
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

Hardware        : BCM2835
Revision        : a22082

As tu déjà eu un retour de ce problème ?


#16

Salut SGBVida,

Il te faut au minimum la version Mono 3.10 pour une sentinelle et 3.12 pour l’installation du serveur.
Le repository de Raspbian contient une version obsolète de Mono. Il faut installer la version 3.12 soi-même.

Ce que j’ai fait:

# First make sure your base installation is up-to-date
sudo apt-get update
sudo apt-get upgrade

# Install build-essential (may well already be installed, but worth checking)
sudo apt-get install build-essential

# You may want to run the remainder of these commands in a scratch directory

# This grabs the current version of mono (3.12.0)  
# Point your browser to http://download.mono-project.com/sources/mono
# to check that it is still the most recent version.
wget http://download.mono-project.com/sources/mono/mono-3.12.0.tar.bz2
tar -xvf mono-3.12.0.tar.bz2

cd mono-3.12.0
./configure --prefix=/usr/local
make
sudo make install

# This should show that you now have the latest version of Mono installed successfully!
mono --version

L’installation prend du temps (2 ou 3 heures).

Si le numéro de version de Mono (mono --version) n’est toujours pas 3.12, il faut changer les liens suivants:

# Backup of the old version of Mono
sudo mv mono-service mono-service.old
sudo mv mono-sgen mono-sgen.old

# Creation of symbolic link to the new version
sudo ln -s /usr/local/bin/mono-sgen mono-sgen
sudo ln -s /usr/local/bin/mono-service mono-service

Julien.


#17

Salut SGBVida,

Il te faut au minimum la version Mono 3.10 pour une sentinelle et 3.12 pour l’installation du serveur.
Le repository de Raspbian contient une version obsolète de Mono. Il faut installer la version 3.12 soi-même.

Ce que j’ai fait:

# First make sure your base installation is up-to-date
sudo apt-get update
sudo apt-get upgrade

# Install build-essential (may well already be installed, but worth checking)
sudo apt-get install build-essential

# You may want to run the remainder of these commands in a scratch directory

# This grabs the current version of mono (3.12.0)  
# Point your browser to http://download.mono-project.com/sources/mono
# to check that it is still the most recent version.
wget http://download.mono-project.com/sources/mono/mono-3.12.0.tar.bz2
tar -xvf mono-3.12.0.tar.bz2

cd mono-3.12.0
./configure --prefix=/usr/local
make
sudo make install

# This should show that you now have the latest version of Mono installed successfully!
mono --version

L’installation prend du temps (2 ou 3 heures).