rasProject_01 / weSweetHome  R. 116 2026-05-14
process control       /     RasPi software         by   weinert-automation
Loading...
Searching...
No Matches
meteRead.c File Reference

A CGI program to co-operate with hometerControl. More...

#include "sysBasic.h"
#include "sweetHome.h"
#include "weCGIajax.h"
#include "weShareMem.h"

Functions

int main (int argc, char **argv)
 The program.

Variables

char const prgNamPure []
 The pure program name.
char const prgSVNdat []
 The complete SVN date string.
char const prgSVNrev []
 The complete SVN revision string.

Detailed Description

A CGI program to co-operate with hometerControl.

Revision history

Client functions

This program gets values from hometersControl via shared memory synchronised with a set of semaphores:
sem # 0: exclusive lock of shared memory (for the shortest time possible !)
sem # 1: signal from from hometersControl to other program
sem # 2: signal from from hometersControl to this program (meteRead)

Under the same semaphore (#0) lock it may set command codes in the shared memory according to the query string. A query will usually be part of the request when buttons were pressed in the web page.

GCI server functions

This program's output (i.e. AJAX answer) are physical readings, status values and times as JSON object, leaving selection of values and their display to the HTML page respectively its Javascript code.

In the JSON object's text delivered all numerical values (int, float) are put as strings in appropriate form and precision. The rationale is to avoid auto parsing of data, all or most of which will probably be formatted (back to text) to be put in the web page. And, alas, formatting is not Javascript's strong point, while parsing a string to a number would not be a problem, if a number is needed.

GCI back-link – command by query

This program evaluates a query string parameter command=command. command (2nd) = startPump | stopPump etc. see sweetHome.h and cmdLookUp.

Library usage

The program uses the library (lib...): pthread

Build the program

cross-compile by:

program by:

Due to bugs in C make use winscp directly by entering the commands displayed

The "due to bugs in C make" remark above applies to all winscp command lines displayed.
Uploading / updating a (this) CGI program might require stopping the loop imposed by the corresponding HTML page.

load the matching HTML page(s) respectively update all web files by:

Due to said bugs in C make use winscp directly by entering the commands displayed

The first will transfer all web files common to projects and targets while the second one will transfer the target specific ones potentially overwriting a non fitting common one. Hence, keep the order displayed.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

The program.

Run by (Apache) web server as (cgi) script with optional (query string) parameters.

Variable Documentation

◆ prgNamPure

char const prgNamPure[]

The pure program name.

To be provided in the application's / program's source.

See also
progNam() progNamB()

◆ prgSVNrev

char const prgSVNrev[]

The complete SVN revision string.

To be provided in the application's / program's source.

See also
progRev()

◆ prgSVNdat

char const prgSVNdat[]

The complete SVN date string.

To be provided in the application's / program's source.

See also
progDat()