Italian Chiacchiericci

udg

Expert
Licensed User
Longtime User
Giusto per aggiungere altra incertezza ..eheh; potresti provare i servizi gratuiti di Amazon o sottoscrivere un VPS Aruba a 1euro/mese, su cui far girare un modulo server in B4J che riceve i dati e li registra su un MySql. Lo stesso modulo fornirebbe le risposte ai dispositivi di interrogazione.
La parte di scambio dati potresti realizzarla con jRDC2 (io ho usato un mio protocollo perchè RDC non esisteva ancora..).
In pratica, prepari un "pacchetto" (record da trasmettere) e lo invii al modulo server; questi lo "apre" ed esegue la sua INSERT (dopo eventuali controlli?), poi invia un messaggio di ACK (ad esempio il classico error=0) oppure di ERR (e qui ti sbizzarrisci)
Per le letture, il procedimento è simile: il dispositivo remoto invia un mesasggio di richiesta dati, il server recupera i dati da DB, li impacchetta e li inoltra al richiedente.

Un altro sistema potrebbe essere quello di installare un broker MQTT. Il dispositivo che rileva i dati invia un messaggio su un canale condiviso e tutti gli altri che hanno effettuato una sottoscrizione a quel canale ricevono i dati inviati. SE vuoi conservare i dati in un DB, nulla impedisce che sul PC-server giri anche un client MQTT oltre al broker e quindi sia in grado di ricever lo stesso messaggio che ricevono tutti gli altri e di conseguenza avere la possibilità di memorizzarne i dati su DB.

udg
 

Star-Dust

Expert
Licensed User
Longtime User
Giusto per aggiungere altra incertezza ..eheh; potresti provare i servizi gratuiti di Amazon o sottoscrivere un VPS Aruba a 1euro/mese, su cui far girare un modulo server in B4J che riceve i dati e li registra su un MySql. Lo stesso modulo fornirebbe le risposte ai dispositivi di interrogazione.
La parte di scambio dati potresti realizzarla con jRDC2 (io ho usato un mio protocollo perchè RDC non esisteva ancora..).
In pratica, prepari un "pacchetto" (record da trasmettere) e lo invii al modulo server; questi lo "apre" ed esegue la sua INSERT (dopo eventuali controlli?), poi invia un messaggio di ACK (ad esempio il classico error=0) oppure di ERR (e qui ti sbizzarrisci)
Per le letture, il procedimento è simile: il dispositivo remoto invia un mesasggio di richiesta dati, il server recupera i dati da DB, li impacchetta e li inoltra al richiedente.

Un altro sistema potrebbe essere quello di installare un broker MQTT. Il dispositivo che rileva i dati invia un messaggio su un canale condiviso e tutti gli altri che hanno effettuato una sottoscrizione a quel canale ricevono i dati inviati. SE vuoi conservare i dati in un DB, nulla impedisce che sul PC-server giri anche un client MQTT oltre al broker e quindi sia in grado di ricever lo stesso messaggio che ricevono tutti gli altri e di conseguenza avere la possibilità di memorizzarne i dati su DB.

udg
Avere un server B4J non mi dispiace. Anzi sarebbe una bella idea come anche MQTT. Al momento siccome é solo un prototipo cerco una soluzione più veloce senza dover creare il server e senza spendere 1 euro.

Voglio vedere se riusco a realizzare L'App e se piace, in coso positivo sicuramente adotterò una di queste due soluzioni. Già nel passato avevo adottato un sistema simile, ho creato un server in Java e funzionava una meraviglia, ma avevo una vpn e girava su un mio server.
 

Star-Dust

Expert
Licensed User
Longtime User
Ho creato un Database su altervista, fortunatamente ha degli strumenti per crearlo.

Ho creato questo codice seguendo delle documentazioni online.

B4X:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "my_db";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$P1=$_GET["P1"]
$P2=$_GET["P2"]
$P3=$_GET["P3"]
$P4=$_GET["P4"]

$sql = "INSERT INTO MyGuests (P1, P2, P3, P4)
VALUES ('". $P1 ."', '". $P2 ."', '". $P3 ."','". $P4 ."')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

Prima che faccio una prova, sto facendo bene? Suggerimenti ? ...
 

LucaMs

Expert
Licensed User
Longtime User
A quest'ora la prova l'avrai già fatta (che ti costa? Non è nemmeno necessario che tu lo faccia eseguire da un'app, puoi inviare il comando tramite browser).

Cmq, il "." (punto) in PHP è il simbolo che si usa per concatenare le stringhe, così come la & si usa in b4a, per cui la query non è corretta.

$sql = "INSERT INTO MyGuests (`P1`, `P2`, `P3`, `P4`) VALUES ('$P1', '$P2', '$P3', $P4)";

Non ho messo gli apri per $P4 perché nel MIO esempio, il campo P4 è numerico ;).

Una cosa utile ed importante è che puoi includere file php all'interno di... file php.

In pratica, delle routine di utilità. Ad esempio, se crei una pagina php per l'autenticazione dell'utente, puoi poi inserirla in una pagina il cui scopo è quello di inserire record in un db.

Per farlo, ti basta inserire all'interno del php che scrive sul db qualcosa tipo:

include "NomeFilePHPEsterno.php";
 

Star-Dust

Expert
Licensed User
Longtime User
Non ho fatto la prova, ma il "." punto é giusto perché in quel caso si concatenano perché è una stringa di query e aggiungo i parametri.

in B4X sarebbe:

B4X:
sql = "INSERT INTO MyGuests (P1, P2, P3, P4) VALUES ('" & P1 &"', '" & P2 & "', '" & $P3 & "','" & $P4 &"')"

Perché non scrivere un traduttore da B4X a PHP? cosi non impazziamo con il PHP
 

udg

Expert
Licensed User
Longtime User

udg

Expert
Licensed User
Longtime User
No. Credo intendano dire che se ti attivi su uno dei due datacenter indicati paghi 1 euro altrimenti se ne selezoini uno differente passi a 2.79
 

LucaMs

Expert
Licensed User
Longtime User
No. Credo intendano dire che se ti attivi su uno dei due datacenter indicati paghi 1 euro altrimenti se ne selezoini uno differente passi a 2.79
E quindi ti diranno che quei datacenter, sfortunatamente, sono full ;).

Comunque, grazie, proverocci presto.


Ah, hai deciso se scrivere un libro o fare l'autore per comici da 4 soldi, tipo quelli di Colo..do? :D
 

udg

Expert
Licensed User
Longtime User
L'ultima volta che avevo controllato non era disponibile in datacenter italiani; oggi sembrerebbe di sì.

Se quei comici suscitano in te una certa risposta fisiologica, allora la trasmissione sarà Colon..do eheh
 

Star-Dust

Expert
Licensed User
Longtime User
Risolto, era una mia svista... PS la query é semplicissima, le cose complesse sono altre :p:p:p
 

Star-Dust

Expert
Licensed User
Longtime User
Più semplice l'errore, avevo chiamato un campo dea DataBase Long, che é anche un tipo di dati.... andavano in disaccordo ovviamente :)
Una scemata da principianti. Come sono io d'altronde :D:D
 
Top